javascript - 如何在 NodeJS 中正确签署对 Twitter REST API v1.1 的 HTTP 请求?

标签 javascript node.js twitter oauth parse-platform

当我在 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 ”作为 twitterTokentwitterTokenSecret,但我还提供了 ACCESS_TOKENTOKEN_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/

相关文章:

javascript - 文档写入是将 html 写入第三方网站以实现企业品牌的首选方式吗?

javascript - 停止 jQuery 从控制台记录失败的 XHR GET 请求

javascript - history.go ('url' ) 问题

javascript - 导航栏导致其他组件无法在 React Router 中加载

algorithm - 数据挖掘和基于文本的分析的模式识别

php - Elliot Haughin 的 CodeIgniter Twitter 库是最好的还是其他的?

javascript - 语法错误: missing ; before statement | ReferenceError:[function] is not defined

javascript - 如何确保 ZeroMQ 在套接字关闭后不会阻塞等待消息?

javascript - 将参数传递给 async.js 任务

javascript - 使用 Javascript 打开链接