created: 2018-12-04T01:05:39.000Z
環境変数にセットしてあるGoogleのJWTを使って認証する
GoogleのAPIを叩く際に、GOOGLE_APPLICATION_CREDENTIALS
を使ってファイルから認証情報を読み取る例は書いてあったが、環境変数に入ってるJWT文字列を認証情報として使う方法が見つからなかったのでメモ
こちらに書いてあるfromJSON
を使う方法を試したら通った
Instead of loading credentials from a key file, you can also provide them using an environment variable and the GoogleAuth.fromJSON() method. This is particularly convenient for systems that deploy directly from source control (Heroku, App Engine, etc).
const { google } = require('googleapis');
const sheets = google.sheets('v4');
async function getSpreadsheetData (spreadsheetId: string, range: string) {
// `CREDJSON` 環境変数にJWTが入ってるとして
const cred = JSON.parse(process.env.CREDJSON);
const auth = google.auth.fromJSON(cred);
auth.scopes = ['https://www.googleapis.com/auth/spreadsheets'];
return new Promise((resolve, reject) => {
sheets.spreadsheets.values.get(
{ auth, spreadsheetId, range }
(err, resp) => (err ? reject(err) : resolve(resp.data.values)),
);
});
}
googleapis
と google-auth-library
以下のオブジェクトは同じ実装なんだろうか 🤔
require('googleapis').google.auth
require('google-auth-library')