2011-12-04 4 views
2

私は自分のOAuthライブラリとラッパークラスをPHPで書くのは間違いです。 TwitterのOAuth実装ではすべてがうまく機能しますが、TumblrとFlickrのaccess_tokenステップには署名できません。OAuthアクセストークンを取得する(言語特有ではない) - FlickrとTumblrは同じですが、Twitterは同じではありません

このステップの違いは、oauth_tokenとoauth_verifierパラメータがあることです。私はAuthorizationヘッダーを使用していますが、私が考えることができる唯一の問題は文字エンコーディングの問題がいくつかあることですが、わかりません。 (わかりやすくするために壊れた)

ベース文字列

POST& 
http%3A%2F%2Fwww.flickr.com%2Fservices%2Foauth%2Faccess_token& 
oauth_consumer_key%3Deeedfcd4c46a2c12080f58eb90a974d8 
%26oauth_nonce%3D322190b47ca680d053338724ad1cc56d35d3e7b5 
%26oauth_signature_method%3DHMAC-SHA1 
%26oauth_timestamp%3D1322981994 
%26oauth_token%3D72157628270097303-18aa378b4ab02af3 
%26oauth_verifier%3Dec7811503fdd4380 
%26oauth_version%3D1.0 

これは、署名が問題であると信じて私をリードしている、(彼らはエラーレスポンスでそう教えて)のFlickrが期待する正確に何です。

Authorizationヘッダ(もわかりやすくするために壊れた):

Authorization: OAuth 
oauth_consumer_key="eeedfcd4c46a2c12080f58eb90a974d8", 
oauth_nonce="322190b47ca680d053338724ad1cc56d35d3e7b5", 
oauth_signature_method="HMAC-SHA1", 
oauth_timestamp="1322981994", 
oauth_token="72157628270097303-18aa378b4ab02af3", 
oauth_verifier="ec7811503fdd4380", 
oauth_version="1.0", 
oauth_signature="LYJtgHetQWNKX3rtQlSs643FdWY%3D" 

やFlickrの応答

oauth_problem=signature_invalid& 
debug_sbs=POST& 
    http%3A%2F%2Fwww.flickr.com%2Fservices%2Foauth%2Faccess_token& 
    oauth_consumer_key%3Deeedfcd4c46a2c12080f58eb90a974d8 
    %26oauth_nonce%3D322190b47ca680d053338724ad1cc56d35d3e7b5 
    %26oauth_signature_method%3DHMAC-SHA1 
    %26oauth_timestamp%3D1322981994 
    %26oauth_token%3D72157628270097303-18aa378b4ab02af3 
    %26oauth_verifier%3Dec7811503fdd4380 
    %26oauth_version%3D1.0 

何のGETやPOSTのパラメータがありません。すべて私はここから見たものから正しくエスケープされているようです。署名はrequest_tokenステップ(およびANY要求の場合はTwitter)で機能します。私は自分のサーバークロックが2分の1以内にあることを確認しました。私は明白な何かを欠いていますかこれを診断するにはどうしたらいいですか?

+0

どのような問題が発生しているのですか?エラーですか? –

+0

ハハ。私はエラーを忘れてしまったという私のすべての情報を与えることに集中しました。申し訳ありません、1秒! – landons

答えて

2

私自身の質問にお答えします。

異なるOAuthのサービスプロバイダ実装間、いくつかの相違がありました:

は、Twitter

  • したがってaccess_tokenは応答
  • までoauth_token_secret戻りませんrequest_tokenステップ
  • にoauth_callback期待されています、access_tokenリクエストに署名する際に空のoauth_token_secretがあります

& Flickrのリアクション

  • (すなわち、認証にoauth_callbackい)YouTubeの(および他のGoogleのOAuthサービス・プロバイダー

)request_tokenステップに)ステップ

  • 戻りoauth_token_secretを承認(とあなたがそれを覚えて、要求をaccess_tokenは署名に使用することを期待:

    • request_tokenの段階でGoogle独自の「範囲」を期待します。
    • 認証時にoauth_callbackが必要です(つまり、OAuthAuthorizeToken)ステップ
    • oauth_tokenがaccess_tokenステップのAuthorizationヘッダーに渡されたようには思われません(ベース文字列で必須のダブルエンコーディングのために "token invalid"と応答します)。それをポストボディまたはクエリ文字列に渡してください。
  • +1

    tumblrからaccess_tokenを取得する方法に悩まされています。私はtumblrからoauth_token_secret&oauth_tokenを取得しましたが、現在access_tokenを取得する方法はわかりません。ここでoauth_tokenをaccess_tokenとして使用すると、tumblrは認証の警告を出します。また、このプロセスでoauth_verifierが使用されている場合はお知らせください。私を助けてください。私はすでに同じ2日間を無駄にしています。 –

    関連する問題