当我在 defined in my cloud/twitter.js file 内调用 twitter.request()
( Parse Cloud Code ) 时,我只收到错误 32“无法验证您的身份” 。我已完成 Twitter 在 "Creating a Signature" 中告诉我要做的所有事情和 "Authorizing a request"在dev.twitter.com ,但我似乎无法找到如何做到这一点。
还有其他人有使用 Parse Cloud Code 访问 Twitter REST API v1.1 的经验吗?
P.S.您可以假设我在 Parse.User
中拥有用户的“访问 token ”和“ token secret ”作为 twitterToken
和 twitterTokenSecret
,但我还提供了 ACCESS_TOKEN
和 TOKEN_SECRET
常量,因此您不必重新创建我的 Parse.User
来帮助我调试此问题.
最佳答案
结果证明这是一个简单的修复(谢天谢地)。问题在于我的签名(捂脸)后面有一个&
。这是我必须更改的功能。
function getAuthSignature (user, request, oauth) {
var signingKey, body, signatureBase;
signingKey =
ENCODING_METHOD(CONSUMER_SECRET) + '&' + ENCODING_METHOD(TOKEN_SECRET);
body =
mapObject(oauth, ampersandEncoding)
.concat(mapObject(request.params, ampersandEncoding))
.sort();
// Remove trailing ampersand. (aka the fix)
body.push(body.pop().replace('&', ''));
signatureBase =
request.method.toUpperCase() + '&' +
ENCODING_METHOD(request.url) + '&' +
ENCODING_METHOD(body.join(''));
return crypto.createHmac('sha1', signingKey)
.update(signatureBase)
.digest('base64');
};
关于javascript - 如何在 NodeJS 中正确签署对 Twitter REST API v1.1 的 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21654245/