1

也许我没有正确理解 OAuth 流程,但这是我想要做的:我有一个服务会向 Trello 的 API 发出请求,所以,为了执行一些请求,我需要一个访问令牌。

这甚至可能吗?我知道您可以使用其他服务(例如 Twitter)来执行此操作,但我不知道我是否可以针对 Trello 执行此操作。

我正在使用 NodeJS 和一个名为oauth的库来执行此操作,我的流程如下所示:我创建了一个新的 OAuth 对象,调用getOAuthRequestToken,然后我在回调中调用getOAuthAccessToken,并且在那里我得到一个 500 错误说oauth_verifier丢失。

这是我正在谈论的一段代码:

var OAuth = require('oauth').OAuth,
    oauth = new OAuth('https://trello.com/1/OAuthGetRequestToken?key=' + config.key,
                      'https://trello.com/1/OAuthGetAccessToken',
                      config.key,
                      config.secret,
                      '1.0',
                      null,
                      'PLAINTEXT');

    oauth.getOAuthRequestToken(function(error, oauth_token, oauth_secret, results){
          //Here I have some error handling code
          oauth.getOAuthAccessToken(oauth_token, oauth_secret,
                function(error, oauth_access_token, oauth_access_token_secret, access_results){
                //Here I would be storing the access token for later, etc.
                }
    });

所以,很明显,我没有将oauth_verifier参数传递给getOAuthAccessToken方法(我检查了代码并且该函数期望验证器作为第三个参数),但我没有这样做,因为我没有它:结果对象是空的,我不知道如何以编程方式获取它。

另一件需要注意的事情是,我在请求令牌 url中传递了key参数并使用纯文本作为签名,因为我只是认为这是正确的做法(我在文档中没有看到关于什么样的签名的任何参考使用或者如果我需要将密钥作为参数传递)。

我做的事情真的错了吗?我在正确的轨道上吗?我错过了什么?

一如既往,提前致谢!=)

4

1 回答 1

0

Trello 文档对 oAuth 并没有说太多。

我推测问题在于 Trello 是 oAuth 2.0(由 Facebook、Google 使用),而您正在使用 oAuth 1.0 方案(由 Twitter、Tumblr 使用)。

对于它的价值,node-oauth 库在其目录中有一个 oAuth2 实现,lib您可以通过require在 node.js中包含它。

于 2012-03-26T19:47:29.990 回答