我遇到的问题包括新的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错误吗?
答案 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 =”参数,哈哈只是将它重新排序到第一位。