Bot

GoogleAppsScriptでLINE WORKSのチャットBOTが動かなくなった

山田

2024.12.06既読 1368

昨日までは下記のコードを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

    1
  • 업데이트 된 답글입니다.

    山田 投稿者

    情報共有ありがとうございます。
    Herokuも同じLINE WORKSのAPIを使用している所もあるのですが、GASだけメッセージが何も送られてこない状態です。

    2024.12.06

    0
  • 업데이트 된 답글입니다.

    hiran

    解決策ではないですが、私のところでも同様の処理を実行していて昨日からエラーがでてBotが動かなくなりました。
    2024/12/05 20:52:32 まではOKで、2024/12/05 20:57:32 からNGとなってます。

    2024.12.06

    1
  • 업데이트 된 답글입니다.

    山田 投稿者

    ご連絡ありがとうございます。
    LINE WORKSのAPI(アクセストークンを取得する)に送信後に受け取った値にはエラーメッセージが返って来ていないですね。
    しばらく待ってみます。

    2024.12.06

    0
  • 업데이트 된 답글입니다.

    こちらでは他のLWのAPIもGASで呼び出していました。
    GAS以外では動いているということでしょうか

    2024.12.06

    0
  • 업데이트 된 답글입니다.

    山田 投稿者

    HerokuでRuby on RailsでLINE WORKS Botを動かしている環境はBotからメッセージが届いております。
    それ以外の環境(4件程度)はGASなのですが、そちらの方は全てメッセージが届いていないです。

    2024.12.06

    1
  • 업데이트 된 답글입니다.

    ZA.RO

    私も同じ症状で困っています。
    私はGAS上で、QiitaさんのLINEWORKSライブラリよりgetaccesstokenをしており、昨日までは問題なく使えておりました。
    症状のある方はこのライブラリを使用している方限定なのでしょうか?

    2024.12.06

    0
  • 업데이트 된 답글입니다.

    GASで呼び出しているもので、そのライブラリを使用していないものも動いていません。
    困りましたね><

    2024.12.06

    0
  • 업데이트 된 답글입니다.

    山田 投稿者

    こちらもライブラリは使用していないですが、GASで下記のURLにオプションを指定してPOSTした時に動かなくなっております。
    'https://auth.worksmobile.com/oauth2/v2.0/token';

    2024.12.06

    0
  • 업데이트 된 답글입니다.

    ZA.RO

    私は、UrlFetchAppをかけたあとに、以下のエラーが表示されます。
         
    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

    2
  • 업데이트 된 답글입니다.

    ZA.RO

    別のスレッドでも書き込みましたが、LINEWORKS DEVELOPERコンソールのAPI設定の画面で、トークン設定という項目が若干変わっていました。有効時間の設定スイッチやと、refresh token rotation という項目が増えていました。仕様変更がはいったのでしょうか。

    2024.12.06

    0
  • 업데이트 된 답글입니다.

    M.K.

    これは、LINEWORKS側のアナウンスがないと、先に進めなさそうですね。

    2024.12.06

    0
  • 업데이트 된 답글입니다.

    Mew2

    弊社でも同じくLINEWORKS botが利用できなくなっています。

    弊社の場合は上記のGASやライブラリを利用せず、自前のサービスでService Account 認証用のJWT生成してAccess Tokenを発行していましたが、それでもダメでした。
    「JWT header is not valid」のエラーが返ってくるので、認証の最初のWORKS認可サーバになにか問題が起きているのでは思われます。
    https://developers.worksmobile.com/jp/docs/api

    結局こちらからは手出しできない領域なので、解消を待つしか無さそうですね………

    2024.12.06

    1
  • 업데이트 된 답글입니다.

    nononosuque

    弊社利用の環境でも、
    BotやCalendarと組織の取得等でエラーが発生していることを確認していますが、
    usersのGETに関しては利用できることを確認しています。
    皆様の場合は、usersのAPIも利用できない状況になりますでしょうか。

    2024.12.06

    0
  • 업데이트 된 답글입니다.

    ユーザ取得で失敗していますが、よく見るとその前のアクセストークンの取得の段階で失敗しているようです。

    >GASで下記のURLにオプションを指定してPOSTした時に動かなくなっております。
    >'https://auth.worksmobile.com/oauth2/v2.0/token';
    ここです

    2024.12.06

    2
  • 업데이트 된 답글입니다.

    nononosuque

    手元(GASではないですが)で確認したusersのgetではログを見る限りアクセストークンの取得が成功していました。
    弊社も同様にアクセストークン取得時にエラーが発生しているケースも確認しております。

    Developer Consoleの期間24時間で検索した場合、
    12/6以降でAPI呼び出しが実行されているものがありました。
    (エラーカウントされていないのでおそらく成功している想定になります)

    取得出来る出来ないの原因は不明ですが、
    アクセストークン取得出来ているパターンもあるようです。

    2024.12.06

    0
  • 업데이트 된 답글입니다.

    Mew2

    GASではなく自前のサービスでAccess Tokenを取得して利用していますが、先程の11:27に1回だけ認証取得できてbotが動いたものがありました。
    構成やコードは変えてませんが、その1回だけ謎に成功してました。(その後はまた失敗してる)

    LINEWORKSさんがきっと何か頑張ってくれてるのだと信じましょう。

    2024.12.06

    1
  • 업데이트 된 답글입니다.

    内木達也

    全く同じ現象で困っています(ソースコードも)。

    一旦、こちらでも問い合わせしています。
    https://jp1-support.worksmobile.com/adminInquiry

    2024.12.06

    2
  • 업데이트 된 답글입니다.

    ZA.RO

    5分おきにトリガ実行させているBOTプログラムが時々、さきほど2件動いた形跡があります。
    このまま修正を加えなくともなおってくれることを祈ります。。。

    2024.12.06

    2
  • 업데이트 된 답글입니다.

    hiran

    弊社では復旧したようです。送られるべき件数のメッセージが届きました。

    2024.12.06

    3
  • 업데이트 된 답글입니다.

    山田 投稿者

    こちらも動くようになりました。

    2024.12.06

    2
  • 업데이트 된 답글입니다.

    ZA.RO

    こちらもうまく動いているようです。同じ症状の方とこちらで繋がることでなんとか落ち着いて対処することができました。
    みなさん解決されたようでなによりです。ありがとうございました。
    また何か躓いた時は、何卒よろしくお願い申し上げます。

    2024.12.06

    3
  • 업데이트 된 답글입니다.

    こちらも正常に動作してることを確認しました。
    ありがとうございました。

    2024.12.06

    2
  • 업데이트 된 답글입니다.

    山田 投稿者

    みなさんの環境でも無事に動作するようになって良かったです。
    情報共有やアドバイスなどありがとうございました。

    2024.12.06

    0
  • 업데이트 된 답글입니다.

    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

    2
  • 업데이트 된 답글입니다.

    cadcad-sat

    私も問題解決の備忘録として、投稿させていただきます。

    ### エラー内容
    ・不具合解消のアナウンス後でも、アクセストークン生成時に `invalid_request` で ClientIDが不正とレスポンスされる

    ### 解決方法
    DevelopersのClientAppでアプリを新規作成し、利用していたスコープ等を設定。
    新たに発行されたClientIdやSecret、PrivateKeyを使用する。
    ※コードの変更はなし

    ### 環境
    C#, .NET8で認証コードを自前で実装

    2024.12.09

    2
  • 업데이트 된 답글입니다.

    AkiB2

    こちらの皆さまの情報たいへん助かりました。私も解決例として投稿させてください。
      
    ・状況
    GASで書いた全く同じプログラムを複数のドメインで使用していたが、そのうち1つだけClientIDが不正のエラーが解消されなかった
    JWT処理の厳密化と聞き、他ドメインとの差分が怪しいと思い、Private Keyを再発行して再設定するも状況変わらず

    ・解決方法
    ClientAppの再作成で解決しました。コード変更はなしでした

    以上です。

    2024.12.12

    1
前の投稿tokenの取得
次の投稿GASを利用したLINE WRKS botの作成について
リスト

まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。