我有一个应用程序允许用户授权我的应用程序,以便它使用Twitters REST Api。这个过程工作正常但是当我尝试执行GET请求来搜索哈希标记时,它们都崩溃了。我使用的文档是以下https://dev.twitter.com/docs/api/1.1/get/search/tweets
首先,我检查了我的 Signature Base ,反对Twitter的Generate。
我的
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
那些似乎相当类似,唯一的区别是生成的nonce(不确定是否有问题)。现在我觉得奇怪的一件事是请求是
https://api.twitter.com/1.1/search/tweets.json?q=%23ireland
但是从查看Twitters 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"
唯一的区别是我的Signature的顺序不同但是我没有看到任何文档说它必须完美匹配。
所以最后我设置了我的实际请求,这只是
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.Headers["Authorization"] = headers;
HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync();
网址是上面提到的网址。当我的方法运行时,我得到401响应
[System.Net.WebException] = {"The remote server returned an error: (401) Unauthorized."}
有人发现我的实施有什么不妥,或者我可能错过了什么?
答案 0 :(得分:0)
对于您的授权标题,我读过您应该按字母顺序排列它们。你的oauth_version和oauth_signature与twitters的顺序不同。