使用Twitter API签名请求
本文关键字:请求 API Twitter 使用 | 更新日期: 2023-09-27 17:58:25
有一个问题让我抓狂:下面的代码适用于第一个URL(查找),但不适用于第二个URL(更新状态)。我的请求出现签名错误。。。
url = string.Format("http://api.twitter.com/1/users/lookup.xml?screen_name={0}", myOAuth.UrlEncode("someuser"));
url = string.Format("http://api.twitter.com/1/statuses/update.xml?status={0}", myOAuth.UrlEncode("bla bla bla"));
string oAuthSignature = myOAuth.GenerateSignature(new Uri(url), consumerKey, consumerSecret, token, tokenSecret, httpMethod, timeStamp, nonce, signatureType, out normalizedUrl, out normalizedRequestParameters);
string encodedSign = myOAuth.UrlEncode(oAuthSignature);
// Rebuild query url with authorization
this.richTextBox1.Text = string.Format("{0}?{1}&oauth_signature={2}", normalizedUrl, normalizedRequestParameters, encodedSign);
可能是因为第一个url是GET方法,第二个url是POST方法?我被困在这里,所以我有任何想法,感谢你的帮助;)
这只是一个小猜想。
可能的问题1。
只有当实际将更新api作为POST请求发送(而不仅仅是将其作为POST请求签名)时,更新api才会工作。当twitter重新创建您的签名以验证您发送的签名时,它会检查使用哪个http方法发送请求,并使用该信息创建签名基字符串。因此,如果您在签名基字符串中创建了一个带有"POST"的签名,但实际上将其作为GET发送。。。它不起作用。
可能的问题2。
如果您正在发送POST请求,那么另一个可能的问题是您没有将POST用作签名基字符串的一部分。当您调用myOauth.GenerateSignature
时,在第二种情况下,您将发送什么作为httpMethod
参数?由于http方法(GET或POST)是签名基字符串的一部分。这需要相应地设定。
可能的问题3。
你是不是每次请求都会发送一个新的nonce?