Почему мой вызов API Twitter OAuth для обновления состояния не выполняется, а другие вызовы работают? - PullRequest
1 голос
/ 05 марта 2010

Это необработанный HTTP-вызов, который я делаю для проверки подлинности. Возвращает ожидаемый ответ:

GET /1/account/verify_credentials.xml HTTP/1.1
Authorization: OAuth oauth_token="12556442-pndSo1mf2i1ToPSbAyLH4qBBDHmtyutjbvMLckGER",oauth_consumer_key="ih75ityikrTdIwB9kQ",oauth_nonce="6wIbdfxL",oauth_signature_method="HMAC-SHA1",oauth_signature="7DUW5TLtntryndfhU5dSXARg%3D",oauth_version="1.0",oauth_timestamp="1267805254"
Host: api.twitter.com

Это вызов, который я (пытаюсь сделать), чтобы обновить статус пользователя:

POST /1/statuses/update.xml HTTP/1.1
Authorization: OAuth oauth_token="1252356242-pndSo1mf2i1ToPSfghfghfQoMLckGER",oauth_consumer_key="ih75i83BXdfhnfghnfgQ",oauth_nonce="CJ9dfgXs",oauth_signature_method="HMAC-SHA1",oauth_signature="bSD7aXUdfghdfghfghfghoU%3D",oauth_version="1.0",oauth_timestamp="1267235407"
Content-Type: application/x-www-form-urlencoded
Host: api.twitter.com
Content-Length: 11
Connection: Keep-Alive

status=blah

Ответ, который я получаю из твиттера на этот второй запрос, выглядит следующим образом:

HTTP/1.1 401 Unauthorized
Date: Fri, 05 Mar 2010 16:17:18 GMT
Server: hi
Status: 401 Unauthorized
WWW-Authenticate: Basic realm="Twitter API"
Content-Type: application/xml; charset=utf-8
Content-Length: 135
Cache-Control: no-cache, max-age=1800
Set-Cookie: guest_id=12672352252251; path=/
Set-Cookie: _twitter_sess=BAh7CDoPY3JlYXRlZF9hdGsdgsdhdrhvdrthvdthd0%250ANDdkZTEyZjczZTY3ZGE4YmQ5IgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVy%250AOjpGbGFzaDo6Rmxhc2hIYXNoewAGOgpAdXNlZHsA--0eb657ba0esdrvthdtdtgcdrtgc0ece8f1460; domain=.twitter.com; path=/
Expires: Fri, 05 Mar 2010 16:47:17 GMT
Vary: Accept-Encoding
Connection: close

<?xml version="1.0" encoding="UTF-8"?>
<hash>
  <request>/1/statuses/update.xml</request>
  <error>Incorrect signature</error>
</hash>

Есть идеи, что может пойти не так?

  • Обратите внимание, что токены OAuth и прочее были зашифрованы, конечно.

Ответы [ 3 ]

1 голос
/ 05 марта 2010

Решено:

Несмотря на то, что мне пришлось сделать этот вызов POST-запросом, фактические параметры не могли быть в теле POST.Я поместил переменную состояния в строку запроса по запросу, и она работала нормально.

0 голосов
/ 06 марта 2010

Параметры POST передаются в хеш, который создает подпись, поэтому вы должны убедиться, что они включены при вычислении.

0 голосов
/ 05 марта 2010

у меня похожая проблема ... 401 не авторизован ... используя php я следовал примерам в http://www.snipe.net/2009/07/writing-your-first-twitter-application-with-oauth/

, пока не обнаружил параметры 'POST' и $ data не поменялась местами в строке $ content= $ to-> OAuthRequest ('https://twitter.com/statuses/update.xml','POST',$data);

может быть, это тоже ваш случай?

возможно, в любом случае, я не нашел этот учебник очень полезным

cheer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...