2013-02-12 62 views
1

我有一个应用程序允许用户授权我的应用程序,以便它使用Twitters REST Api。这个过程可以正常工作,但是当我尝试执行GET请求来搜索散列标签时,这一切都会崩溃。我正在使用的文档如下https://dev.twitter.com/docs/api/1.1/get/search/tweets使用Twitter API时出现401错误用户/搜索

因此,首先我检查了我的签名库针对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 

Twitter的

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 

那些似乎与所产生的随机数(不知道这是问题)唯一的区别相当类似。现在有一两件事,我在此发现奇怪的是,该请求是

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" 

Twitter的

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."} 

任何人在我的执行发现任何错误或我可能错过了什么吗?

+0

同样的问题在这里。所有其他1.1端点对我来说没有问题,但不是搜索端点。我绝对无能为力。 – whitebrow 2013-02-25 03:11:28

回答

0

对于您的授权标题,我读过你应该按字母顺序排列。你的oauth_version和oauth_signature顺序与推特不同。

相关问题