LINEWORKS APIでアプリを作成して、関数を実行したらエラー
・Exception: Request failed for https://www.worksapis.com returned code 401. Truncated server response: {"code":"UNAUTHORIZED","description":"Malformed authentication token"} (use muteHttpExceptions option to examine full response)
上記のようなエラーが発生した
本番環境と同じ環境で同じコードなのに、本番では動いているのに、どうして動かないのだろうか。😢
日本語の意味は
・例外: https://www.worksapis.com へのリクエストが失敗し、コード 401 が返されました。切り捨てられたサーバー応答: {"code":"UNAUTHORIZED","description":"Malformed authentication token"} (完全な応答を調べるには、muteHttpExceptions オプションを使用してください)
らしい
apiへのリクエストが失敗したってことは、認証情報が間違っているのかな?
でも、プライベートキーの改行コードは忘れないように入れたし(2敗)
lineworksのドキュメントには
必要な認証情報が欠落しているか誤っている
一般的な認証エラーは RFC 6749 を確認してください
ってことは認証情報周りの間違いなんだと思うけど、何回見直しても俺は間違っていない!妖怪のせいですわぁ
改めて認証方法について確認
参照(https://developers.worksmobile.com/jp/docs/auth)
クライアント認証情報の管理設定について、今回行っているのはService Account認証
Service Account認証を行う際に必要な情報は
・Client ID
・Client Secret
・OAuth Scopes
・トークン設定
・Service Account
・Private Key
以上の6つ
ソースコードを確認したけども、どれも問題なさそう。
トークン設定の違いを発見!!風向きが変わった..?
Access Tokenの有効期限とRefresh Token Rotationの設定が異なっていた。
しかし、これを本番環境と同じにしただけだと変わらない
アクセストークンを取得する関数があるので実行するも、肝心の動かしたい関数のエラーは変わらず...、風向き変わってねーじゃねーか
そして解決へ...人の目は信用できない
OAuth Scopes 間違えてました。
board.read と bot.read 間違えてました。
もう俺悪くないとか言わないです。すみませんでした。
まとめ
上記のエラーが起きた際は、まず認証情報が間違っていないかどうかを考えよう
Service Accountt認証を行う際に必要な情報は
・Client ID
・Client Secret
・OAuth Scopes
・トークン設定
・Service Account
・Private Key
User Account認証を行う際に必要な情報は
・Client ID
・Client Secret
・OAuth Scopes
・トークン設定
・Redirect URL
・(OIDC Logout Redirection - Redirect URL)
以上!