Почему API Discord возвращает код ошибки 400?

Как исправить ошибку "400 Bad Request", которую я получаю при попытке выполнить запрос на проверку наличия пользователя на моем сервере через Discord OAuth2 с использованием токена доступа? Вот код, который я использую:
```python
guilds = requests.get('https://discord.com/api/users/@me/guilds', data={'limit': 10}, headers={'Authorization': f'Bearer {access_token}'})
print(guilds)
```
Хотя мой токен доступа действителен и у него есть права для получения информации о серверах (guilds), я все равно получаю ошибку "400". Что я делаю не так?
  • 9 октября 2023 г. 13:27
Ответы на вопрос 2
Ошибка "400 Bad Request" означает, что сервер не может обработать запрос из-за некорректного синтаксиса или неверных параметров запроса.

В вашем случае, возможно, ошибка происходит из-за неправильного использования метода `requests.get()`. Вы используете `data` вместо `params`, чтобы передать параметры запроса.

Вот как вы можете исправить ваш код:

```python
guilds = requests.get('https://discord.com/api/users/@me/guilds', params={'limit': 10}, headers={'Authorization': f'Bearer {access_token}'})
print(guilds)
```

Здесь мы заменили `data` на `params`, чтобы указать параметры запроса. Теперь `limit=10` будет передан в запрос как правильный параметр.

Если после внесения этого изменения вы все равно получаете ошибку "400", это может быть связано с другими проблемами, такими как недействительный токен доступа или нехватка прав доступа. В таком случае рекомендуется проверить свои права доступа и убедиться, что вы используете корректный токен доступа.
Vadok, эндпоинт не принимает тело запроса, потому что это GET запрос. "fat GET" не работает здесь. Вместо передачи параметров через data, в данном случае следует использовать params. Пример: guilds = requests.get('https://discord.com/api/users/@me/guilds', params={'limit': 10}, headers={'Authorization': f'Bearer {access_token}'})
Похожие вопросы