1

私はimgurのAPIを使用しており、oAuth認証を設定する必要があります。かなり順調に進んでいますが、問題が発生しました...

oAuth request_tokenエンドポイントを取得して成功メッセージを表示できなかったため、imgur devsに連絡すると、重要な情報が提供されました。しかし、私はこの情報がどこから来ているのかわかりませんでした。

私が話している情報は私のoAuth署名です。私はoAuth署名が私のapi_secretにすぎないことを知っていましたが、imgur devによって提供された作業コードには、最後にアンパサンドがタグ付けされていました。

このアンパサンドは、2回URLエンコードされました。から、そして&%26%2526

API Secret        => 7fc6ff69*snip*c4016e7f99e076 // This does not work by itself
[oauth_signature] => 7fc6ff69*snip*c4016e7f99e076%2526 // Works
[oauth_signature] => 7fc6ff69*snip*c4016e7f99e076&  // This also works

なぜアンパサンドが必要なのですか?これはバグですか、それとも実際にoAuth 1.0ドキュメントのどこかに記載されていますか?それは常にアンパサンドですか、それとも奇妙な偶然の一致ですか?どこから来たのかわからない...

編集:oauth_signatureはリクエストの最後の変数であるため、別の変数とマージしないでください。基本的に、URLの終わりはアンパサンド(またはHTMLでエンコードされたバージョン)で終わる必要があります。

4

1 に答える 1

3

保護された OAuth 要求の場合、署名は通常、シークレットのペア(多くの場合、共有シークレットと承認されたトークン シークレット) を使用して生成されます。ご想像のとおり、アンパサンド ("&") を使用して 2 つのシークレットを区切ります。ただし、(imgur のように) 単一のシークレットが署名として使用される場合は、引き続きアンパサンドが必要ですが、分離する 2 番目のシークレットがないため、アンパサンドは文字列の末尾に表示されます。別の考え方として、アンパサンドは api_secret と空のシークレットを分離しています。

于 2012-05-10T08:02:14.373 に答える