motu12345
投稿
コメント
ありがとうございます。おっしゃる通りです。 参考にさせていただいたら、エラー回避できました。
Bot 2022.07.08
ご返事ありがとうございます。記事が大変参考になりました。 JWTの内容を参考にライブラリを使用せず、JWT Tokenを取得しています。 ------------------------------------------------- function test(){ const token = getAccessToken(getEnv_(),"bot") Logger.log(token.access_token) } function getJwt(ENV){ const header = Utilities.base64Encode(JSON.stringify({"alg":"RS256","typ":"JWT"}), Utilities.Charset.UTF_8) const claimSet = JSON.stringify({ "iss": ENV.CLIENT_ID, "sub": ENV.SERVICE_ACCOUNT, "iat": Math.floor(Date.now() / 1000), "exp": Math.floor(Date.now() / 1000 + 2000) }) const encodeText = header + "." + Utilities.base64Encode(claimSet, Utilities.Charset.UTF_8) const signature = Utilities.computeRsaSha256Signature(encodeText, ENV.PRIVATE_KEY) return encodeText + "." + Utilities.base64Encode(signature) } function getAccessToken(ENV, scopes) { const uri = "https://auth.worksmobile.com/oauth2/v2.0/token" const payload = { "assertion" : getJwt(ENV), "grant_type" : encodeURIComponent("urn:ietf:params:oauth:grant-type:jwt-bearer"), "client_id": ENV.CLIENT_ID, "client_secret": ENV.CLIENT_SECRET, "scope": scopes } const options = { "method": "post", "headers": {"Content-Type" : "application/x-www-form-urlencoded"}, "payload": payload } return JSON.parse(UrlFetchApp.fetch(uri, options)) }