我目前正在尝试使用Node.js Web应用程序访问私有Trello板。我想要实现的是创建新卡。不幸的是,我陷入了接收令牌的过程中。
我使用node-oath库并按如下方式嵌入:
var OAuth = require('oauth').OAuth,
oauth = new OAuth('https://trello.com/1/OAuthGetRequestToken',
'https://trello.com/1/OAuthGetAccessToken',
myKey,
myOAuthSecret,
'1.0',
undefined,
'PLAINTEXT');
之后,我尝试通过调用来获取令牌:
oauth.getOAuthRequestToken(function (error, oauth_token, oauth_secret, results) {
if (error) return console.log('1: ' + JSON.stringify(error));
oauth.getOAuthAccessToken(oauth_token, oauth_secret, function (error, oauth_access_token, oauth_access_token_secret, access_results) {
if (error) return console.log('2: ' + JSON.stringify(error));
// ...
当我运行此代码时,我总是收到以下错误消息:
1: {"statusCode":500,"data":"Invalid Signature"}
所以,显然第一个OAuth请求有问题。我已经看到Trello也支持HMAC-SHA1。当我使用它而不是PLAINTEXT时,第一个请求成功,但第二个请求失败,因为我没有指定oauth_verifier。
不幸的是,我对如何提供此验证器没有任何想法。我已经阅读了OAuth RFC,但这对我没有帮助。
基本上,我实际上不需要 HMAC-SHA1,PLAINTEXT就可以了。
有人知道可能出现的问题吗?
PS:我已经在Trello开发板上读到,一旦有一个错误不允许Trello访问正文中发送的密钥,所以他们建议你使用查询字符串发送它。但即使我将第一个代码块更改为var OAuth = require('oauth').OAuth,
oauth = new OAuth('https://trello.com/1/OAuthGetRequestToken?key=' + myKey,
'https://trello.com/1/OAuthGetAccessToken',
myKey,
myOAuthSecret,
'1.0',
undefined,
'PLAINTEXT');
它根本不会改变任何东西: - /
有什么想法吗?
答案 0 :(得分:5)
来自npm(下面链接)的node-trello软件包对我来说很好,我没有发现你的代码有任何问题需要检查;如果我是你,我会做的是安装node-trello并将其用作一个工作示例;如果这不起作用,那么您可能需要重新生成开发人员密钥。
<强>节点trello:强>
https://github.com/adunkman/node-trello
https://github.com/adunkman/node-trello/blob/master/lib/trello-oauth.coffee