【Node.js】GoogleAPIのOAuth2の認証が1時間で切れてしまう問題

2019/10/12

2017/03/01投稿ではてなブログから移行した内容です.

認証が1時間しか使えない

Google Calendar APIのサンプルでは

.credentials/calendar-nodejs-quickstart.json

{
  "access_token": "アクセストークン",
  "refresh_token": "アクセストークンを更新するためのトークン",
  "token_type": "Bearer",
  "expiry_date": アクセストークンが使えなくなる期限,
}

を作成し、このファイルを更新せずに認証に使っている。
この認証は1時間で使えないようになってしまう。

感謝

ニコ生で生放送中に優秀なエンジニアさんが来てくださり、その方に助けてもらいながら解決することができました。
本当にありがとうございました!
GoogleカレンダーAPIとSlack APIを使ったプログラミング

解決策

解決策としては、refreshAccessToken() メソッドを利用する。
Refresh token of google api do not work properly in nodejs

authorize()メソッドの中を修正する。

fs.readFile(TOKEN_PATH, function(err, token) {
    if (err) {
        getNewToken(oauth2Client, callback);
    } else {
        oauth2Client.credentials = JSON.parse(token);
        oauth2Client.refreshAccessToken(function(err, tokens) {
            if (err) {
                console.log(err);
                return;
            }
            oauth2Client.credentials = tokens;
            storeToken(tokens);
        });
        callback(oauth2Client);
    }
});

これで解決!のはず...

Togelloというサービスをリリースいたしました。