LoginSignup
17
8

More than 5 years have passed since last update.

環境変数からprivate_keyを読み込んだ際にJWT Clientを初期化出来ない場合の対処方法

Last updated at Posted at 2016-10-31

概要

Google APIs Node.js ClientでJWTでのサービスアカウントを使用した認証を行った際にハマったことのメモです。

問題

環境変数にclient_secret.jsonprivate_keyを登録し、それをコードからprocess.envで参照して認証に使用しました。

const jwtClient = new google.auth.JWT(
    process.env.SERVICE_ACCOUNT_EMAIL,
    null,
    process.env.SERVICE_ACCOUNT_KEY,
    ['https://www.googleapis.com/auth/drive'],
    null);

このコードで上手く行きそうなのですが、実際には以下のようなエラーが出て上手く認証ができませんでした。

Error: error:0906D06C:PEM routines:PEM_read_bio:no start line

private_keyをハードコーディングした場合には問題なく認証できており、keyが間違っている訳ではありませんでした。

解決策

環境変数から読み込んだprivate_keyの改行コードを.replace(/\\n/g, '\n')で置き換えることで解決しました。

コードは以下の通りです。

const jwtClient = new google.auth.JWT(
    process.env.SERVICE_ACCOUNT_EMAIL,
    null,
    process.env.SERVICE_ACCOUNT_KEY.replace(/\\n/g, '\n'),
    ['https://www.googleapis.com/auth/drive'],
    null);
17
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
8