Twitter Oauth возможная причина ответа 400 Bad Request с использованием простого клиента REST
Я сгенерировал токены доступа на странице "Настройки / Ключи и ключи доступа" и теперь у меня есть
- Ключ потребителя
- Секретный ключ потребителя
- ID владельца (хотя это, вероятно, уже было сгенерировано)
- Токен доступа
- Секрет токена доступа
и я использую клиент отдыха, чтобы проверить возможность получить последние 3 статуса с помощью этой конечной точки API
https://api.twitter.com/1.1/statuses/user_timeline.json?user_id=userIdHere&count=3
а также следующие заголовки
- Принять: /
- Подключение: закрыть
- Пользователь-агент: OAuth gem v0.4.4
- Тип контента: application/x-www-form-urlencoded
- Длина контента: 76
- Ведущий: api.twitter.com
- Авторизация: OAuth
- oauth_consumer_key =
- oauth_signature =
- oauth_signature_method =
- oauth_timestamp =
- oauth_token =
- oauth_version =
очевидно, 'userIdHere ' в адресе конечной точки (см. выше) заменяется моим именем пользователя (я знаю, что я также могу использовать свой user_id, но это не имеет значения), а также значениями 'Authorization', заменяемыми реальными значениями. Вот где мой вопрос лежит...
Каково сопоставление для каждого из параметров авторизации 'oauth...' с соответствующим Twitter, созданным и предоставленным токеном или ключом (ключами) (которые упоминались в верхней части сообщения)?
Я продолжаю получать ответ "400 Bad Request" и чувствую, что это авторизация, которая терпит неудачу в том, что перестановки ключевых мест размещения неверны. Я не знаю, какое значение соответствует какому значению "oauth..."
наконец, структура заголовка параметра "Авторизация" выглядит следующим образом (согласно инструкции из ПРИМЕРА Twitter) в виде строкового значения
OAuth oauth_consumer_key="xvz1evFS4wEEPTGEFPHBog", oauth_nonce="kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg", oauth_signature="tnnArxj06cWHq44gCs1OSKk%2FjLY%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1318622958", oauth_token="370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb", oauth_version="1.0")
Я просто пытаюсь использовать GET, чтобы получить последние 3 статуса и не смог. Кроме того, я планирую переключить значения на переменные среды, но это пока не имеет значения..
ОБНОВЛЕНИЕ с использованием Почтальона сейчас, и это лучше при картировании, но теперь я получаю
{
"errors": [ { "code": 32, "message": "Не удалось аутентифицировать вас". } ] }
1 ответ
Для части "Почтальон" убедитесь, что вы оставили пустую метку времени и одноразовый номер и нажали "запрос на обновление", прежде чем нажать "Отправить". Это сгенерирует метку времени и одноразовый номер, иначе вы будете каждый раз получать ошибки авторизации. Я только что попробовал это с моими учетными данными Твиттера API, и это работает.
Что касается кода Gem Oauth, я нахожу странным, что у вас есть Content-Type
и Content-Length
заголовок для GET
запрос. Выглядит как 400 Bad request
может быть потому, что вы пытаетесь сделать POST
до конечной точки, которая поддерживает только GET
, Действительно, когда я пытаюсь сделать POST
в этой конечной точке это говорит мне.
{
"errors": [
{
"code": 86,
"message": "This method requires a GET or HEAD."
}
]
}
Таким образом, 400 - это действительно хорошая новость - это означает, что авторизация работает, вы просто неправильно вызываете API.