OAuthアクセストークン(言語固有ではない)の取得 - FlickrとTumblrと同じ問題がありますが、Twitterではありません

StackOverflow https://stackoverflow.com/questions/8373885

質問

私は自分のOAuthライブラリとラッパークラスをPHPで書くという大きな間違いを犯しています。 TwitterのOAuth実装ではすべてが素晴らしく機能しますが、TumblrとFlickrの両方のAccess_Tokenステップに署名することに失敗しました。

そのステップの唯一の違いは、OAUTH_TOKENおよびOAUTH_VERIFIERパラメーターがあることです。私は承認ヘッダーを使用していますが、私が考えることができる唯一の問題は、いくつかのキャラクターエンコードの問題があるということですが、私にはわかりません。

ベース文字列 (明確にするために壊れています):

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: 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ステップ(および任意のリクエストのために)のために機能します。サーバークロックが1秒以内にあることを確認しました。明白なものが足りないのですか?これをどのように診断しますか?

役に立ちましたか?

解決

自分の質問に答えます。

異なるOAUTHサービスプロバイダーの実装の間には、いくつかの矛盾がありました。

ツイッター

  • request_tokenステップに従ってOAUTH_CALLBACKを期待します
  • Access_Token応答までOAUTH_TOKEN_SECRETを返しません
  • したがって、Access_Tokenリクエストに署名する際に空のoauth_token_secretがあります

Flickr&Tumblr

  • Authenticate(IE Authorize)ステップでOAUTH_CALLBACKを期待してください
  • request_token stepをrefering oauth_token_secretを返します(そして、それを覚えて、それを使用してアクセス_tokenリクエストに署名することを期待してください)

YouTube(および他のGoogle OAuthサービスプロバイダー):

  • Request_Tokenステップに応じて、Googleプロパリエタリの「スコープ」を期待しています
  • Authenticate(つまり、oauthauthorizetoken)ステップに関するoauth_callbackが予想されます
  • Access_TokenステップでOAUTH_TOKENが承認ヘッダーで渡されたようには見えません(ベース文字列での必要な二重エンコードのために「トークン無効」で応答します)。代わりにポストボディまたはクエリ文字列に渡します。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top