当我从我的应用程序向我的Twitter帐户发布更新时,Twitter Api收到“不正确的签名”错误。 我使用的是javascript OAuth库oauth.js。
这是我的代码:
consumer.Name =
{ consumerKey : "xxxxxxxdwcececwscwdc",
consumerSecret: "xxrtbujztvfdtcehz5tjv6uvjxbzuku7ik",
serviceProvider:{
signatureMethod : "HMAC-SHA1"
, requestTokenURL : "https://api.twitter.com/oauth/request_token"
, userAuthorizationURL: "https://api.twitter.com/oauth/authorize"
, accessTokenURL : "https://api.twitter.com/oauth/access_token"
, echoURL : "myApp.html"
}
}
function postTweet(consumerName, twitterText){
var accessor = consumer[consumerName];
message = {method: "POST",action: "http://api.twitter.com/1/statuses/update.json",
parameters:{
oauth_token: my_oauth_token// <-- here is the current oauth_token
status: twitterText,
}
}; // end of message
OAuth.completeRequest(message,
{
consumerKey : accessor.consumerKey,
consumerSecret : accessor.consumerSecret
}
);
var authorizationHeader = OAuth.getAuthorizationHeader("", message.parameters);
var requestBody = OAuth.formEncode(message.parameters);
var postTweetText = newXMLHttpRequest();
postTweetText.onreadystatechange = function receiveAccessToken(){
if (postTweetText.readyState == 4) {
blabla
}
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
postTweetText.open(message.method, message.action, true);
postTweetText.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
postTweetText.setRequestHeader("Authorization", authorizationHeader);//;
postTweetText.send(requestBody);//requestBody
} }
我做错了什么?
}
答案 0 :(得分:0)
在这个问题上进展得相当晚,但希望这会导致有类似问题的人找到解决方案。
我有相同的回复,但这是因为我使用不同的应用设置了OAuth,保存了这些凭据,然后尝试在Twitter上发布到其他注册的应用。因此,签名不正确,因为我试图使用其他应用程序的凭据进行身份验证。
通过修改二进制文件并进行清理/构建来修复。