1

Twitter の REST Api を使用するために、ユーザーがアプリケーションを承認できるようにするアプリケーションがあります。このプロセスは正常に機能しますが、GET リクエストを実行してハッシュ タグを検索しようとすると、すべてがバラバラになります。私が使用しているドキュメントは次のとおりですhttps://dev.twitter.com/docs/api/1.1/get/search/tweets

最初に、署名ベースを Twitter の生成ベースと照合しました。

私の

GET&https%3A%2F%2Fapi.twitter.com%2F1.1%2Fsearch%2Ftweets.json&oauth_consumer_key%3Dik7trnFwjZ1aoQBajjLv9A%26oauth_nonce%3D500199554%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1360688610%26oauth_token%3D932308590-5KAmpqMDIOC9tcrhVSfwCxMz0ye8BXmhKSQyPb97%26oauth_version%3D1.0%26q%3D%2523ireland

ツイッター

GET&https%3A%2F%2Fapi.twitter.com%2F1.1%2Fsearch%2Ftweets.json&oauth_consumer_key%3Dik7trnFwjZ1aoQBajjLv9A%26oauth_nonce%3D8522ba23a34a6748d7bd6e2e5b68c56f%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1360681312%26oauth_token%3D932308590-5KAmpqMDIOC9tcrhVSfwCxMz0ye8BXmhKSQyPb97%26oauth_version%3D1.0%26q%3D%2523ireland

それらは、生成されたナンスだけが異なるだけで、かなり似ているように見えます(それが問題かどうかはわかりません)。ここで私が奇妙に思うことの 1 つは、要求が

https://api.twitter.com/1.1/search/tweets.json?q=%23ireland

しかし、Twitter の OAuth ツールの署名ベースを見ると、? を削除する必要があります。奇妙に思えるSignuatre Baseを生成するときのその要求から。

次は承認ヘッダーです

私の

Authorization: OAuth oauth_consumer_key="ik7trnFwjZ1aoQBajjLv9A", oauth_nonce="500199554", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1360688610", oauth_token="932308590-5KAmpqMDIOC9tcrhVSfwCxMz0ye8BXmhKSQyPb97", oauth_version="1.0", oauth_signature="aSytUd6HrwAzzAzDyP%2FMqL2qNCE%3D"

ツイッター

Authorization: OAuth oauth_consumer_key="ik7trnFwjZ1aoQBajjLv9A", oauth_nonce="8522ba23a34a6748d7bd6e2e5b68c56f", oauth_signature="bw0My7Z3ESXDOjsTLYgbTIjGi6s%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1360681312", oauth_token="932308590-5KAmpqMDIOC9tcrhVSfwCxMz0ye8BXmhKSQyPb97", oauth_version="1.0"

これの唯一の違いは、署名の順序が異なることですが、完全に一致しなければならないという文書は見たことがありません。

最後に、実際のリクエストを設定しました。これは単純です

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            request.Headers["Authorization"] = headers;
            HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync();

URL は上記の URL です。メソッドを実行すると、401 応答が返されます

[System.Net.WebException] = {"The remote server returned an error: (401) Unauthorized."}

私の実装に何か問題があるか、または私が見逃した可能性があるものを見つけた人はいますか?

4

1 に答える 1

0

承認ヘッダーについては、アルファベット順に並べる必要があると読みました。あなたの oauth_version と oauth_signature は、Twitter とは異なる順序になっています。

于 2013-06-14T19:52:00.173 に答える