1

私は現在、Googleカレンダーでイベントを作成するnode.jsアプリに取り組んでいます。私のマシン (OS X 10.9.2) では問題なく動作しますが、別のマシン (Debian 7 Wheezy 64 ビット) では動作しません。どちらも同じ node.js バージョン (v0.10.26) をインストールしています。私は常に次のエラーが発生します。

crypto.js:398
var ret = this._binding.sign(toBuf(key));
                      ^
TypeError: Not a buffer
at Sign.sign (crypto.js:398:27)
at createRS256Signature (/path/to/node_app/node_modules/googleapis/node_modules/gapitoken/node_modules/jws/index.js:75:58)
at jwsRS256Sign (/path/to/node_app/node_modules/googleapis/node_modules/gapitoken/node_modules/jws/index.js:68:21)
at Object.jwsSign [as sign] (/path/to/node_app/node_modules/googleapis/node_modules/gapitoken/node_modules/jws/index.js:32:12)
at GAPI.getAccessToken (/path/to/node_app/node_modules/googleapis/node_modules/gapitoken/gapitoken.js:56:25)
at GAPI.getToken (/path/to/node_app/node_modules/googleapis/node_modules/gapitoken/gapitoken.js:35:14)
at JWT.refreshToken_ (/path/to/node_app/node_modules/googleapis/lib/auth/jwtclient.js:83:13)
at /path/to/node_app/node_modules/googleapis/lib/auth/jwtclient.js:64:12
at /path/to/node_app/node_modules/googleapis/node_modules/gapitoken/gapitoken.js:20:17
at fs.js:266:14

このエラーの原因となるコード:

this.jwt = new googleapis.auth.JWT(
    SERVICE_ACCOUNT_EMAIL,
    SERVICE_ACCOUNT_KEY_FILE,
    null,
    ['https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.readonly']);

SERVICE_ACCOUNT_KEY_FILE は、私の .pem キーファイルへのパスであり、アプリケーションでも見つけることができます。

すべてローカルで動作しますが、Debian マシンでは動作しません。いくつかの依存関係などをインストールする必要がありますか?

EDIT1:3番目の引数を介してキーを文字列として渡そうとしましたが、それもうまくいきませんでした。

ありがとうございました!

4

1 に答える 1

2

ファイルからキーを取得し、キーファイルの代わりにキー引数として渡すことで修正しました。非同期ファイル アクセスの問題により、キーが読み取られなかったようです。

于 2014-05-09T14:54:56.130 に答える