如何在NodeJS中正确地向Twitter的REST API v1.1签名HTTP请求?

当我在Parse Cloud Code中调用twitter.request() ( 在我的cloud / twitter.js文件中定义 twitter.request()时,我只会收到错误32“无法validation你”。 我已经做了Twitter告诉我在dev.twitter.com上的 “创build签名”和“授权请求” 所做的一切 ,但似乎无法find如何去做。

有其他人有使用Parse Cloud Code访问Twitter REST API v1.1的经验吗?

PS你可以假设我有用户的“访问令牌”和“令牌秘密”在一个Parse.User作为twitterTokentwitterTokenSecret ,但我也提供了ACCESS_TOKENTOKEN_SECRET常量,所以你不必重新创build我的Parse.User来帮助我debugging这个。

事实certificate,这是一个简单的修复(谢天谢地)。 问题在于我的签名(facepalm)。 这是我必须改变的function。

 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'); };