1

Androidアプリからflickr.comのユーザーを認証するために、Oauth署名を生成しようとしています。

flickr.comの記事によると、署名を取得するには署名リクエストを送信する必要があります。flickr.comガイドページへのハイパーリンクは次のとおりです。

http://www.flickr.com/services/api/auth.oauth.html#request_token

投稿によると、署名キーを受け取るには、次のようなリクエストをflickrサーバーに送信する必要があります。

http://www.flickr.com/services/oauth/request_token
?oauth_nonce=89601180
&oauth_timestamp=1305583298
&oauth_consumer_key=653e7a6ecc1d528c516cc8f92cf98611
&oauth_signature_method=HMAC-SHA1
&oauth_version=1.0
&oauth_callback=http%3A%2F%2Fwww.example.com

上記の形式でアプリからリクエストを送信しましたが、受け取ったのはoauth_problem = parameter_absent&oauth_parameter_absent=oauth_signatureというエラーだけです。

私のリクエストコードは次のとおりです。

HttpGet get = new HttpGet("http://www.flickr.com/services/oauth/request_token?oauth_nonce="+nonce+"&oauth_timestamp="+ts+"&oauth_consumer_key=****&oauth_signature_method=HMAC-SHA1&oauth_version=1.0");

実際の問題は、私が署名を要求しているURLが間違った方法で応答していることです。署名を返す必要がある場所、署名を要求します。

4

1 に答える 1

1

署名ステップは要求ではありません。これまでに取得した URI を取得し、ドキュメントに示されているようにベース文字列に変換します (その部分をエンコードする URL など)。HMAC-SHA1 アルゴリズム ウィッチを使用すると、2 つのパラメータkeydata. ベース文字列を次のように使用しdataますkey

「&」で区切られた、コンシューマ シークレットとトークン シークレットの連結値です。

アルゴリズムから返された値 (署名) は、URI に追加されます。

&oauth_signature={ALGORITHM_OUTPUT}

この新しい URI を使用して、トークンを要求できます。

これが大変な作業だと思われる場合は、scribe-javaなどの Java OAuth ライブラリを確認してください。

于 2012-09-20T14:54:21.453 に答える