コンテンツダウンロードAPIのアクセス時に認証失敗が出てしまう。
概要
LINE WORKSのコンテンツダウンロード(GET /bots/{botId}/attachments/{fileId})で認証エラーが発生する。
詳細
LINE WORKSのAPIを用いてBotのトークから送信されたファイルを他のサービスに展開するために
上記APIアクセス時に認証失敗が返ってきております。
確認済みの内容で複数の原因について調査しているのですが、原因が特定できていない状況です。
他に考えられる原因及びその対処方法についてご教授いただけないでしょうか。
実行構成
- 上記ソースをAWS Lambdaに配置しAPI GatewayのHTTPリクエストをトリガに実行する
- API GatewayのエンドポイントはCallback URLとして設定
- 必要な機密情報(秘密鍵等)はSecretManagerに配置
処理フロー
- Botからファイルを送信する
- API Gateway経由で受信したBodyからfileIdを抽出する。
- Service Accountでアクセストークンを発行する。
- 取得したアクセストークンを使用し、Bot経由でユーザにメールを送る(アクセストークンが使えるかどうかの判定向け)
- 取得したfileIdとアクセストークンを使用し、コンテンツダウンロードAPIを実行する。
エラー発生点
5. の処理でHTTP Status Code 401が返却される。
レスポンスBodyは以下の通り。
{
"code":"UNAUTHORIZED",
"description":"Authentication failed."
}
確認済みの内容
- コンテンツダウンロードで使用しているのと同じアクセストークンを用いたメッセージ送信は成功しており、トークン発行に使用するパラメータが間違っていることは考えにくい。
- コンテンツダウンロードAPI使用時のヘッダは以下となっており、ドキュメントと比較しても問題ないように見える。
info_api_url = f"https://www.worksapis.com/v1.0/bots/{bot_id}/attachments/{file_id}"
headers = {'Authorization': f'Bearer {access_token}'}
try:
# まずファイル情報を取得
info_response = session.get(info_api_url, headers=headers, timeout=30)
- トークンのscopeについてもドキュメント通り設定されているように見える。
token_url = 'https://auth.worksmobile.com/oauth2/v2.0/token'
data = {
'grant_type': 'urn:ietf:params:oauth:grant-type:jwt-bearer',
'assertion': assertion,
'client_id': secrets['LINEWORKS_CLIENT_ID'],
'client_secret': secrets['LINEWORKS_CLIENT_SECRET'],
'scope': 'bot bot.message'
}
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
投稿に新しいコメントが追加されましたら通知を送信します。
コメント0
まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。