2012-05-10 20 views
1

私はimgurのAPIを使用しており、oAuth認証を設定する必要があります。それはかなりスムーズに進んでいますが、私は問題に遭遇しました...oAuth署名の最後に "%26"が必要なのはなぜですか?

私は成功メッセージを与えるためにoAuth request_tokenエンドポイントを取得できませんでした。そのため、私はimgur開発者に連絡し、彼らは私に重要な情報を与えました。しかし、私はこの情報がどこから来るのか分からなかった。

私が話している情報は、oAuthの署名です。私はoAuthの署名が私ののapi_secretであることを知っていましたが、imgurの提供する作業用コードの最後にはアンパサンドが付いていました。

このアンパサンドは、2回URLエンコードされました。アンパサンドが必要とされる理由は、その後%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 

に、&から%26に行きましたか?これはバグですか、それともoAuth 1.0 documentationのどこかで実際に言及されていますか?それはいつもアンパサンドですか、ちょうど奇妙な偶然でしょうか?私はそれがどこから来たのかわかりません...

EDIT:oauth_signatureがリクエストの最後の変数であることに言及する価値があるので、別の変数とマージするべきではありません。基本的には、URLの末尾はアンパサンド(またはHTMLでエンコードされたバージョン)で終わらなければなりません。

答えて

3

保護されたOAuth要求の場合、通常、署名はペアのの秘密(多くの場合、共有秘密と許可されたトークンシークレット)を使用して生成されます。おそらく推測したように、アンパサンド( "&")を使用して2つの秘密を分離します。しかし、シグネチャとして単一のシークレットが使用されている場合(imgurの場合と同様に)、アンパサンドは依然として必要ですが、別のセクレタリが存在しないため、文字列の最後にアンパサンドが表示されます。それを考えるもう一つの方法は、アンパサンドがapi_secretと空の秘密を分離することです。

+4

正確には、またはより少ない言葉で。常に2つの秘密が必要で、常にアンパサンドで連結されます。最初のステップを除いて、アンパサンドで何も連結されていない秘密が1つだけ必要です。 –

関連する問題