2011-07-29 5 views
6

OAuthプロセスを通じてアクセストークンを取得できました。「OAuthで認証できませんでした」 POSTの試行時にTwitterから投稿

しかし、POSTを/statuses/update.jsonエンドポイントに実行しようとすると、「OAuthで認証できませんでした」というメッセージが表示されます。

私は消費者の秘密の認証から戻ってきたトークンで署名していますが、他に何ができるのか分かりません。

Twitterフォーラムも役に立たなかった。

ヒントをいただければ幸いです。

+0

まず、あなたのキー(認証が必要なstatus/home_timelineのようなもの)でGETリクエストを試してみてください。それは動作しますか? – Shcheklein

+10

サーバーの時計がTwitterや他のよく知られているタイムサーバーと同期していることを確認してください。 15分以上離れていると、Twitterは不正な署名をして失敗します。 –

+1

私は正確に同じ問題(c/liboauth/maemo5)を経験していました - アクセストークン(画面名など)を取得するまですべてがうまく流れました - しかし、エラー... Eranのコメントを読んでいる私は、私が働いていたVMの時計が1時間であることに気づいた!そして今それは動作します:)そう、ありがとうございますEran - あなたのコメントは答え、+1する必要があります。 – fusi

答えて

0

Twitterへの認証された呼び出しの作成は苦しいことがあります。

署名ベース文字列のパラメータがアルファベット順であることを確認してください。

この取る:、値を記入のBase64でそれをコード化し、このように一緒にそれを置く

oauth_consumer_key={consumerkey}&oauth_nonce={nonce}&oauth_signature_method=HMAC-SHA1&oauth_timestamp={timestamp}&oauth_token={token}&oauth_version=1.0&status={tweet text} 

を:

POST&{base64 encoded url}&{base64 encoded base string} 

これはあなたが(なしに署名する必要がある文字列になりますブラケット)。

(ここではURLはhttps://api.twitter.com/1.1/statuses/update.jsonあろう)署名鍵は、このように構築される必要がある:

{consumer secret}&{token secret} 

署名は、その後、base64エンコードされHMACSHA1ハッシュです。

OAuth oauth_consumer_key="{consumer key}",oauth_nonce="{nonce}",oauth_signature="{signature}",oauth_signature_method="HMAC-SHA1",oauth_timestamp="{timestamp}",oauth_token="{token}",oauth_version="1.0" 

そして最後に、あなたのリクエストでポストされたデータとしてstatus=your tweet textを置く:

その後、Authorizationヘッダーでこれを配置する必要があります。

こちらがお役に立てば幸いです。

関連する問題