私は Oauth Api の実装に取り組んでおり、検証に問題があることがいくつかあることを発見しています。誰かが説明を提供できれば幸いです。警告私はおそらくとりとめのないので、質問を太字でマークしようとします.
oauth 1.0 仕様https://www.rfc-editor.org/rfc/rfc5849によると、oauth パラメーターが署名用にパーセントでエンコードされる方法は、通信中とは異なると思われます。セクション 3.6 https://www.rfc-editor.org/rfc/rfc5849#section-3.6 「署名ベース文字列と「承認」ヘッダー フィールドの構築でのみ使用されます。」
RFC3986 https://www.rfc-editor.org/rfc/rfc3986 これは、通常のリクエストで使用されるパーセント エンコーディング スキームのようです。ただし、「this」が「that」にマップされるようなものは見られなかったので、文字が予約済みリストにある場合は、16 進数の同等のものを使用する必要があると想定しています。
' '(スペース) が署名用にエンコードされたときに %20 であるという唯一の違いはありますか? Oauth仕様はこれを参照していますが、他の仕様でそれが定義されている場所を正直に見つけることができません. それが言及されている場所と、私がそれをどのように誤解したかを誰かが指摘してくれたら素晴らしいでしょう.
他の空白文字は %20 にする必要がありますか? 仕様のどこにそれが言及されていますか?
従来の UrlEncode は、フォームのボディとクエリのパラメーターに適していますか?
最後に、検証しようとしている出力例をいくつか示します。Oauth 署名でエンコードされた文字と Url でエンコードされた文字の違いを示してみました。ここでも、' '、'*' および '~' の処理のみが異なるようです。
Char Oauth Url
* %2A *
~ ~ %7E
% %25 %25
! %21 %21
: %3A %3A
/ %2F %2F
= %3D %3D
& %26 %26
+ %2B %2B
%20 +
, %2C %2C
@ %40 %40
\r\n %0D%0A %0D%0A
\n %0A %0A
\r %0D %0D
" %22 %22
? %3F %3F
( %28 %28
) %29 %29
| %7C %7C
[ %5B %5B
] %5D %5D