如何在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
作为twitterToken
和twitterTokenSecret
,但我也提供了ACCESS_TOKEN
和TOKEN_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'); };