Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Возможно, ты хочешь что-то отредактировать в профиле пользователя.(скинь пример запроса)
Указывай в запросе XF-Api-User, либо ставь параметр api_bypass_permissions 1.
If the API key selected is a super user key, you may pass the user ID of the context user via the XF-Api-User header. If no user ID is passed, the context will default to a guest.
If the request is made with a super user key and you wish to bypass the context user's permissions, this may be done on a per-request basis by setting the api_bypass_permissions parameter to 1. (This can be passed via a query string or as part of the request body.)
многие вещи возможны, но мы сюда не гадать пришли
человек задал вопрос, дал 0 информации, получил симметричный ответ
тут, КАК МИНИМУМ, должен быть приведен сниппет с запросом
Возможно, ты хочешь что-то отредактировать в профиле пользователя.(скинь пример запроса)
Указывай в запросе XF-Api-User, либо ставь параметр api_bypass_permissions 1.
У Вас недостаточно прав для просмотра ссылок.
Вход или Регистрация
У Вас недостаточно прав для просмотра ссылок.
Вход или Регистрация
If the API key selected is a super user key, you may pass the user ID of the context user via the XF-Api-User header. If no user ID is passed, the context will default to a guest.
Если очень хочется "срать жсонами", то можно установить мой плагин, которое "научит" движок читать JSON.
Так же в этой же документации указано очень важное замечание:
If the API key selected is a super user key, you may pass the user ID of the context user via the XF-Api-User header. If no user ID is passed, the context will default to a guest.
Т.к. Вы не указываете явно какого-либо пользователя, то движок стандартно исполняет Ваш запрос "от имени гостя", у которого, естественно, нет прав на такие махинации. Именно если используется супер-ключ.
Так что решение проблемы - добавить параметр api_bypass_permissions, если мы насильно меняем никнейм, либо указать контекстом пользователя, от кого меняем.
Мне было очень больно читать Ваш код без вменяемой табуляции, так что я сделал свой, делающий похожую вещь, и немного более абстрагированный.
Python:
#!/usr/bin/env python3
from requests import Session
class ForumManager:
def __init__(self, url, key, headers={}):
self._url = url
self._key = key
self._headers = headers
def _session(self):
session = Session()
session.headers.update({**{
'XF-API-Key': self._key
}, **self._headers})
return session
def find_user_by_name(self, name):
with self._session() as session:
return session.get(f'{self._url}users/find-name', params={'username': name}).json()['exact']
def edit_user(self, user_id, bypass_permissions=False, **kwargs):
with self._session() as session:
params = {
'api_bypass_permissions': 1 if bypass_permissions else 0
}
response = session.post(f'{self._url}users/{user_id}/', params=params, data=kwargs)
response.raise_for_status()
return response.json()['user']
manager = ForumManager('http://localhost/index.php?api/', 'mRi1HkG-0xSDEZ8kO703xPV909h3-_UL')
user = manager.find_user_by_name('Dummy')
print(f'Found user with ID {user["user_id"]}, changing username...')
edited_user = manager.edit_user(user['user_id'], True, username='Чебурекw')
print(f'Done, now user with ID {user["user_id"]} is named as {edited_user["username"]}')
Ну вообще-то Ксен не поддерживает JSON в виде тела, о чём прямо в их документации сказано:
У Вас недостаточно прав для просмотра ссылок.
Вход или Регистрация
Если очень хочется "срать жсонами", то можно установить моё дополнение, которое "научит" движок читать JSON.
Так же в этой же документации указано очень важное замечание:
Т.к. Вы не указываете явно какого-либо пользователя, то движок стандартно исполняет Ваш запрос "от имени гостя", у которого, естественно, нет прав на такие махинации. Именно если используется супер-ключ.
Так что решение проблемы - добавить параметр api_bypass_permissions, если мы насильно меняем никнейм, либо указать контекстом пользователя, от кого меняем.
Мне было очень больно читать Ваш код без вменяемой табуляции, так что я сделал свой, делающий похожую вещь, и немного более абстрагированный.
Python:
#!/usr/bin/env python3
from requests import Session
class ForumManager:
def __init__(self, url, key, headers={}):
self._url = url
self._key = key
self._headers = headers
def _session(self):
session = Session()
session.headers.update({**{
'XF-API-Key': self._key
}, **self._headers})
return session
def find_user_by_name(self, name):
with self._session() as session:
return session.get(f'{self._url}users/find-name', params={'username': name}).json()['exact']
def edit_user(self, user_id, bypass_permissions=False, **kwargs):
with self._session() as session:
params = {
'api_bypass_permissions': 1 if bypass_permissions else 0
}
response = session.post(f'{self._url}users/{user_id}/', params=params, data=kwargs)
response.raise_for_status()
return response.json()['user']
manager = ForumManager('http://localhost/index.php?api/', 'mRi1HkG-0xSDEZ8kO703xPV909h3-_UL')
user = manager.find_user_by_name('Dummy')
print(f'Found user with ID {user["user_id"]}, changing username...')
edited_user = manager.edit_user(user['user_id'], True, username='Чебурекw')
print(f'Done, now user with ID {user["user_id"]} is named as {edited_user["username"]}')