我已经坚持了一段时间了。我正在尝试使用 OAuthSimple.js 在我编写的 Chrome 扩展程序中与 Twitter 交互。
签名过程似乎适用于检索用户状态的请求,但是当我尝试转发、回复或将推文标记为收藏时,我似乎无法构建一个能够成功验证的请求。
我正在按照这里的指南进行操作。我还尝试了多种构建请求的方法,并将请求内容与 Twitter 提供的 OAuth 工具的输出进行比较(这似乎已签出),但我仍然收到 401 错误和通用“我们无法验证你”的回应。
这是我尝试形成请求的方式:
var sendTwitterRequest = function(url, params, method, callback) {
var request = null;
if ( localStorage.twitterAuthToken ) {
OAuthSimple().reset();
request = OAuthSimple(TwitterConsumerKey,TwitterConsumerSecret).sign({
action:method,
method:"HMAC-SHA1",
dataType:"JSON",
path:url,
parameters:params,
signatures:{
oauth_version:'1.0',
oauth_token:localStorage.twitterAuthToken,
oauth_secret:localStorage.twitterAuthVerifier
}
});
console.log(request);
$j.ajax({
url:request.signed_url,
type:method,
data:request.parameters,
success:callback
});
}
};
然后,像这样调用这个方法:
// this works, I get the data and can do stuff with it
sendTwitterRequest('http://api.twitter.com/1/statuses/user_timeline.json?user_id=',null,'GET',someMethod());
// this fails and throws a 401 error every time
sendTwitterRequest("https://api.twitter.com/1/statuses/retweet/"+tweetKey+".json",null,'POST',someOtherMethod());
我错过了什么吗?提前致谢!