当我在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的经验?
PS 您可以假设我在Parse.User
twitterToken
和twitterTokenSecret
中拥有用户的“访问令牌”和“令牌机密”,但我有还提供了ACCESS_TOKEN
和TOKEN_SECRET
常量,因此您无需重新创建Parse.User
来帮助我调试此内容。
答案 0 :(得分:1)
事实证明这是一个简单的解决方法(谢天谢地)。问题在于&
落后于我的签名(facepalm)。这是我必须改变的功能。
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');
};