HTTP動詞で始める必要があります。あなたはGETリクエストをしていると言います。署名ベース文字列の第1部は、次のとおりです。
GET
は、その後、あなたがURL http://www.example.com/api/?filename=hello.jpgを呼び出していると言うことができます。パラメータを無視して、あなたはパート2を持っている:
http://www.example.com/api/
その後、あなたはfilename
は上記URLからのもので、次のパラメータを、持って言うことができます。サーバによって要求が許可されるためには、プリフィックスとしてoauth_
が必要です。
- oauth_consumer_key = 9djdj82h48djs9d2、
- oauth_token = kkk9d7dh3k39sjv7、
- oauth_signature_method = HMAC-SHA1
- oauth_timestamp = 137131201
- oauth_nonce = 7d8f3e4a
- 名= hello.jpg
上記のすべてのパラメータは、lexiでソートする必要があります(基本的にアルファベット順に)「&」で区切られた表記上のバイト値の順序です。今、あなたは第三部の一部を持っています:これは
GET&http%3A%2F%2Fwww.example.com%2Fapi%2F&filename%3Dhello.jpg%26oauth_consumer_key%3D9djdj82h48djs9d2%26%0Aoauth_nonce%3D7d8f3e4a%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D%0A137131201%26oauth_token%3Dkkk9d7dh3k39sjv7
:
filename=hello.jpg&oauth_consumer_key=9djdj82h48djs9d2& oauth_nonce=7d8f3e4a&oauth_signature_method=HMAC-SHA1&oauth_timestamp= 137131201&oauth_token=kkk9d7dh3k39sjv7
今、あなたは、パート2、パート3は、その後で、その結果、三つの部分を連結URLエンコードする必要がありベースストリングこれで、HMAC-SHA1アルゴリズムを使用して署名する必要があります。その結果得られる署名も要求とともに送信する必要があります。
うわー、素晴らしい!そんなにありがとう。しかし、oauth_nonceは何ですか?どこでタイムスタンプを取得しましたか? – foonot
Nonceはランダムな文字列で、すべてのリクエストに固有のもので、自分で生成する必要があります。それは "一度だけ使われた"という意味ですが、文字や数字の任意の組み合わせが可能です。タイムスタンプは、現在のGMT時間であり、unixタイムスタンプで表されます。これらの両方のパラメータは、個々の要求を悪意のある方法で "再生"することはできません。すべてのリクエストは新しいノンスとタイムスタンプで署名されなければなりません。 –
request_tokenを取得した後、私は次の問題に遭遇しました。アクセストークンの要求トークンを交換するにはoauth_verifierが必要です。 Flickrのページには、この呼び出しを使用する必要があることが記載されています。「http://www.flickr.com/services/oauth/authorize?oauth_token = 72157626737672178-022bbd2f4c2f3432」と、戻り値にはこのベリファイアが含まれている必要があります。しかし、Javaのlibは2つのトークンを取得するためのメソッドしか提供していませんが、私は検証されたURLをどのように呼び出して検証者を取得するのかは不明です。 – foonot