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.

Другие вопросы по тегам