【问题标题】:Issue using the “count” Parameter in the new Twitter Search API 1.1在新的 Twitter Search API 1.1 中使用“count”参数的问题
【发布时间】:2013-09-16 02:16:25
【问题描述】:

我在新的 Twitter 搜索 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 错误吗?

【问题讨论】:

    标签: twitter


    【解决方案1】:

    我有类似的问题,当你生成 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));
    

    【讨论】:

      【解决方案2】:

      @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}&count ={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=”参数,哈哈只是把它重新排在第一位。

      【讨论】:

        猜你喜欢
        • 2013-06-18
        • 2014-03-12
        • 2013-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-14
        • 1970-01-01
        相关资源
        最近更新 更多