現在、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 を指定していないため、2 番目のリクエストは失敗します。
残念ながら、このベリファイアを提供する方法については、まったくわかりません。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');
何も変わりません:-/
何か案は?