GoogleAppsScriptでLINE WORKSのチャットBOTが動かなくなった
昨日までは下記のコードをGASに記載して動いていたのですが、本日急にメッセージがLINE WORKSのBotから返ってこなくなりました。
下記のプログラムでバグが出ているようなのですが、何かGAS側の仕様変更があったのでしょうか?
UrlFetchApp.fetch(uri, options);
/**
* Client IDとService Account IDとPrivate KeyでJWTを取得
*/
function getJwtToken(clientID, serviceAccount, privateKey) {
const header = Utilities.base64Encode(JSON.stringify({"alg":"RS256","typ":"JWT"}), Utilities.Charset.UTF_8);
const claimSet = JSON.stringify({
"iss": clientID,
"sub": serviceAccount,
"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, privateKey);
const jwtToken = encodeText + "." + Utilities.base64Encode(signature);
return jwtToken;
}
/**
* アクセストークンを取得
*/
function getAccessToken(clientID, clientSecret, scope, jwtToken) {
const uri = 'https://auth.worksmobile.com/oauth2/v2.0/token';
const payload = {
"assertion" : jwtToken,
"grant_type" : encodeURIComponent("urn:ietf:params:oauth:grant-type:jwt-bearer"),
"client_id": clientID,
"client_secret": clientSecret,
"scope": scope
};
const options = {
'method': 'post',
'headers': {'Content-Type' : 'application/x-www-form-urlencoded'},
"payload": payload
};
const body = UrlFetchApp.fetch(uri, options);
return JSON.parse(body).access_token;
}
投稿に新しいコメントが追加されましたら通知を送信します。
コメント27
업데이트 된 답글입니다.
情シス福井
botではなく他のAPIも動かなくなっているのでLW側の仕様変更か不具合でしょうか、、
2024.12.06
업데이트 된 답글입니다.
山田 投稿者
Herokuも同じLINE WORKSのAPIを使用している所もあるのですが、GASだけメッセージが何も送られてこない状態です。
2024.12.06
업데이트 된 답글입니다.
hiran
2024/12/05 20:52:32 まではOKで、2024/12/05 20:57:32 からNGとなってます。
2024.12.06
업데이트 된 답글입니다.
山田 投稿者
LINE WORKSのAPI(アクセストークンを取得する)に送信後に受け取った値にはエラーメッセージが返って来ていないですね。
しばらく待ってみます。
2024.12.06
업데이트 된 답글입니다.
情シス福井
GAS以外では動いているということでしょうか
2024.12.06
업데이트 된 답글입니다.
山田 投稿者
それ以外の環境(4件程度)はGASなのですが、そちらの方は全てメッセージが届いていないです。
2024.12.06
업데이트 된 답글입니다.
ZA.RO
私はGAS上で、QiitaさんのLINEWORKSライブラリよりgetaccesstokenをしており、昨日までは問題なく使えておりました。
症状のある方はこのライブラリを使用している方限定なのでしょうか?
2024.12.06
업데이트 된 답글입니다.
情シス福井
困りましたね><
2024.12.06
업데이트 된 답글입니다.
山田 投稿者
'https://auth.worksmobile.com/oauth2/v2.0/token';
2024.12.06
업데이트 된 답글입니다.
ZA.RO
Exception: Request failed for https://auth.worksmobile.com returned code 400. Truncated server response: {"error_description":"JWT header is not valid.","error":"invalid_request","error_uri":"See document on https://developers.worksmobile.com/docs/auth... (use muteHttpExceptions option to examine full response)
2024.12.06
업데이트 된 답글입니다.
ZA.RO
2024.12.06
업데이트 된 답글입니다.
M.K.
2024.12.06
업데이트 된 답글입니다.
Mew2
弊社の場合は上記のGASやライブラリを利用せず、自前のサービスでService Account 認証用のJWT生成してAccess Tokenを発行していましたが、それでもダメでした。
「JWT header is not valid」のエラーが返ってくるので、認証の最初のWORKS認可サーバになにか問題が起きているのでは思われます。
https://developers.worksmobile.com/jp/docs/api
結局こちらからは手出しできない領域なので、解消を待つしか無さそうですね………
2024.12.06
업데이트 된 답글입니다.
nononosuque
BotやCalendarと組織の取得等でエラーが発生していることを確認していますが、
usersのGETに関しては利用できることを確認しています。
皆様の場合は、usersのAPIも利用できない状況になりますでしょうか。
2024.12.06
업데이트 된 답글입니다.
情シス福井
>GASで下記のURLにオプションを指定してPOSTした時に動かなくなっております。
>'https://auth.worksmobile.com/oauth2/v2.0/token';
ここです
2024.12.06
업데이트 된 답글입니다.
nononosuque
弊社も同様にアクセストークン取得時にエラーが発生しているケースも確認しております。
Developer Consoleの期間24時間で検索した場合、
12/6以降でAPI呼び出しが実行されているものがありました。
(エラーカウントされていないのでおそらく成功している想定になります)
取得出来る出来ないの原因は不明ですが、
アクセストークン取得出来ているパターンもあるようです。
2024.12.06
업데이트 된 답글입니다.
Mew2
構成やコードは変えてませんが、その1回だけ謎に成功してました。(その後はまた失敗してる)
LINEWORKSさんがきっと何か頑張ってくれてるのだと信じましょう。
2024.12.06
업데이트 된 답글입니다.
内木達也
一旦、こちらでも問い合わせしています。
https://jp1-support.worksmobile.com/adminInquiry
2024.12.06
업데이트 된 답글입니다.
ZA.RO
このまま修正を加えなくともなおってくれることを祈ります。。。
2024.12.06
업데이트 된 답글입니다.
hiran
2024.12.06
업데이트 된 답글입니다.
山田 投稿者
2024.12.06
업데이트 된 답글입니다.
ZA.RO
みなさん解決されたようでなによりです。ありがとうございました。
また何か躓いた時は、何卒よろしくお願い申し上げます。
2024.12.06
업데이트 된 답글입니다.
情シス福井
ありがとうございました。
2024.12.06
업데이트 된 답글입니다.
山田 投稿者
情報共有やアドバイスなどありがとうございました。
2024.12.06
업데이트 된 답글입니다.
Mew2
記事にもありますが、12/5にJWTの検証処理を厳密化したために認証が弾かれてしまったようでした。
https://developers.worksmobile.com/jp/news/detail?id=666
これらは昼過ぎには解消していたようですが、GASを使用せず自前のサービスで組んでいたJWTではその後も認証エラーが出たままでした。
色々検証した結果、curlのリクエスト文に誤りがあったのが原因で認証エラーになっていました。
これを直したら、無事に自前のサービスでもAccessTokenを取得できるようになりました。
誤:--header 'Content-Type : application/x-www-form-urlencoded'
正:--header 'Content-Type: application/x-www-form-urlencoded'
※Content-Typeの直後のコロンの前に余計なスペースが入ってしまっていた。
公式発表に「12/5にJWTの検証処理を厳密化した」とあるので、こうした表記揺れについて以前は許容されていたのが、昨晩からはそれが許されなくなったようです。
問題解決の備忘録として、こちらに投稿しておきます。
2024.12.06
업데이트 된 답글입니다.
cadcad-sat
### エラー内容
・不具合解消のアナウンス後でも、アクセストークン生成時に `invalid_request` で ClientIDが不正とレスポンスされる
### 解決方法
DevelopersのClientAppでアプリを新規作成し、利用していたスコープ等を設定。
新たに発行されたClientIdやSecret、PrivateKeyを使用する。
※コードの変更はなし
### 環境
C#, .NET8で認証コードを自前で実装
2024.12.09
업데이트 된 답글입니다.
AkiB2
・状況
GASで書いた全く同じプログラムを複数のドメインで使用していたが、そのうち1つだけClientIDが不正のエラーが解消されなかった
JWT処理の厳密化と聞き、他ドメインとの差分が怪しいと思い、Private Keyを再発行して再設定するも状況変わらず
・解決方法
ClientAppの再作成で解決しました。コード変更はなしでした
以上です。
2024.12.12
まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。