ken_nogi/dbbackup/get-token.js
Kenichiro NOGI 67cc3da6c8 up
2026-07-13 19:02:04 +09:00

64 lines
2.5 KiB
JavaScript

"use strict";
/*
* アクセストークンだけを標準出力するヘルパー
* JWT組み立て・トークン取得の実体は lib/lineworksAuth.js (backup.js と共通)
*
* 使い方:
* node get-token.js
* → アクセストークン文字列だけが標準出力される(それ以外は何も出力しない)
*
* 必要な環境変数は .env に必ず設定すること(コード内にデフォルト値は持たない):
* LW_CLIENT_ID / LW_CLIENT_SECRET / LW_SERVICE_ACCOUNT / LW_SCOPE
* LW_PRIVATE_KEY または LW_PRIVATE_KEY_FILE
* いずれかが未設定の場合は何も実行せずエラー終了する。
*/
const fs = require("fs");
require("./lib/env").loadEnv();
const { getAccessToken, resolvePrivateKeyFile } = require("./lib/lineworksAuth");
const LW_CLIENT_ID = process.env.LW_CLIENT_ID;
const LW_CLIENT_SECRET = process.env.LW_CLIENT_SECRET;
const LW_SERVICE_ACCOUNT = process.env.LW_SERVICE_ACCOUNT;
const LW_SCOPE = process.env.LW_SCOPE;
const PRIVATE_KEY_FILE = resolvePrivateKeyFile();
function checkRequiredEnv() {
const missing = [];
if (!LW_CLIENT_ID) missing.push("LW_CLIENT_ID");
if (!LW_CLIENT_SECRET) missing.push("LW_CLIENT_SECRET");
if (!LW_SERVICE_ACCOUNT) missing.push("LW_SERVICE_ACCOUNT");
if (!LW_SCOPE) missing.push("LW_SCOPE");
if (!process.env.LW_PRIVATE_KEY && !fs.existsSync(PRIVATE_KEY_FILE)) {
missing.push(`LW_PRIVATE_KEY_FILE (${PRIVATE_KEY_FILE} が存在しません)`);
}
return missing;
}
async function main() {
const missing = checkRequiredEnv();
if (missing.length > 0) {
process.stderr.write(`.env に必要な環境変数が設定されていません: ${missing.join(", ")}\n`);
process.exitCode = 1;
return;
}
// デバッグ用: 実際に使われている値をstderrに出力(トークン取得の可否には影響しない)
process.stderr.write(`[DEBUG] LW_CLIENT_ID=${LW_CLIENT_ID}\n`);
process.stderr.write(`[DEBUG] LW_SERVICE_ACCOUNT=${LW_SERVICE_ACCOUNT}\n`);
process.stderr.write(`[DEBUG] LW_PRIVATE_KEY_FILE=${PRIVATE_KEY_FILE}\n`);
process.stderr.write(`[DEBUG] 秘密鍵ファイル存在=${fs.existsSync(PRIVATE_KEY_FILE)}\n`);
process.stderr.write(`[DEBUG] LW_SCOPE=${LW_SCOPE}\n`);
try {
const token = await getAccessToken({ scope: LW_SCOPE });
process.stdout.write(token);
} catch (err) {
process.stderr.write(`アクセストークン取得失敗: ${err.message}\n`);
process.exitCode = 1;
}
}
main();