在新的Twitter Search API 1.1中使用“count”参数发出问题

时间:2013-09-16 02:16:26

标签: twitter

我遇到的问题包括新的Twitter Search API(版本1.1)查询中的count参数。如果我执行没有“count”参数的查询,我将获得15个默认结果。同时,如果我包含count参数,我会获得401 Unauthorized Error。

您将在下文中找到我在C#中的代码的部分摘录。

1)最初,baseString变量的结尾设置为“q = Test& count = 100”。

2)将baseString变量传递给EscapeDataString函数后,结果变为q%3DTest%26count%3D100,格式化为百分比编码,符合预期。

3)最后,提交的resource_url如下: https://api.twitter.com/1.1/search/tweets.json?q=Test&count=100

var resource_url = "https://api.twitter.com/1.1/search/tweets.json";

var baseFormat = "oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method={2}&oauth_timestamp={3}&oauth_token={4}&oauth_version={5}&q={6}&count={7}";

var baseString = string.Format(baseFormat,
oauth_consumer_key,
oauth_nonce,
oauth_signature_method,
oauth_timestamp,
oauth_token,
oauth_version,
Uri.EscapeDataString(q),
Uri.EscapeDataString(count)
);

baseString = string.Concat("GET&", Uri.EscapeDataString(resource_url), "&", Uri.EscapeDataString(baseString));



var postBody = "q=" + Uri.EscapeDataString(q) + "&count=" + Uri.EscapeDataString(count);
resource_url += "?" + postBody;

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(resource_url);

有人会知道为什么我收到这个401错误吗?

2 个答案:

答案 0 :(得分:0)

我有类似的问题,看来当你生成OAuth签名时,Twitter对这个字符串的格式很挑剔。我发现甚至重新排序变量导致身份验证错误。 尝试使用下面重新排序的代码替换代码中的特定行,希望有所帮助。

var resource_url = "https://api.twitter.com/1.1/search/tweets.json";
var tweet_query = "Test";
var tweet_count ="5";

var baseFormat = "count={7}&oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method={2}&oauth_timestamp={3}&oauth_token={4}&oauth_version={5}&q={6}";

var baseString = string.Format(baseFormat,
oauth_consumer_key,
oauth_nonce,
oauth_signature_method,
oauth_timestamp,
oauth_token,
oauth_version,
Uri.EscapeDataString(tweet_query),
Uri.EscapeDataString(tweet_count)
);



var postBody = string.Format("q={0}&count={1}", Uri.EscapeDataString(tweet_query), Uri.EscapeDataString(tweet_count));

答案 1 :(得分:0)

@ JF0001

是的我有同样的问题,但johnHk已经有了正确的答案。这只是安置问题。

当我使用它时,它不起作用:

base_Format =“oauth_consumer_key = {0}& oauth_nonce = {1}& oauth_signature_method = {2}”+“& oauth_timestamp = {3}& oauth_token = {4}& oauth_version = {5}& q = {6}&安培; result_type的= {7}&安培;计数= {8}“

但是,如果我使用它,它的工作:

base_Format =“count = {8}& oauth_consumer_key = {0}& oauth_nonce = {1}& oauth_signature_method = {2}”+“& oauth_timestamp = {3}& oauth_token = {4}& ; oauth_version = {5}&安培; q = {6}&安培; result_type的= {7}“

查看“count =”参数,哈哈只是将它重新排序到第一位。