質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

491閲覧

Python×LineAPIについての質問。リクエスト認証エラーになる。

satokatogoto

総合スコア1

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2023/11/16 00:00

編集2023/11/16 08:42

実現したいこと

ここに実現したいことを箇条書きで書いてください。

LineAPIとpythonについての質問です。
下記の関数を動作出来るようにする。
ユーザー認証が上手くいかない。チャンネルユーザートークンが認証出来れば、
全てが上手く行くと思うのですが全くできません。
さらにここからgithubアクションできまった時間に動作するようにするつもりです。
シンプルなプログラムでもう何が悪いか理解できません。
ご教授いただければ幸いです。

前提

ここに質問の内容を詳しく書いてください。
pythonでLineAPIをインポートし、テキストメッセージを自身のラインアカウントに
送ろうと思います。

発生している問題・エラーメッセージ

エラーメッセージ 例外が発生しました: LineBotApiError LineBotApiError: status_code=401, request_id=1dc29e2a-6d8a-4260-8c38-19c64b9b0880, error_response={"details": [], "message": "Authentication failed. Confirm that the access token in the authorization header is valid."}, headers={'server': 'legy', 'cache-control': 'no-cache, no-store, max-age=0, must-revalidate', 'content-type': 'application/json', 'date': 'Wed, 15 Nov 2023 18:56:46 GMT', 'expires': '0', 'pragma': 'no-cache', 'www-authenticate': 'Bearer error="invalid_token", error_description="invalid token"', 'x-content-type-options': 'nosniff', 'x-frame-options': 'DENY', 'x-line-request-id': '1dc29e2a-6d8a-4260-8c38-19c64b9b0880', 'x-xss-protection': '1; mode=block', 'content-length': '104'} File "C:\Users\eisuke0904\Desktop\linebot2\bot\junbot.py", line 12, in main line_bot_api.push_message(USER_ID, messages=messages) File "C:\Users\eisuke0904\Desktop\linebot2\bot\junbot.py", line 15, in <module> main() linebot.exceptions.LineBotApiError: LineBotApiError: status_code=401, request_id=1dc29e2a-6d8a-4260-8c38-19c64b9b0880, error_response={"details": [], "message": "Authentication failed. Confirm that the access token in the authorization header is valid."}, headers={'server': 'legy', 'cache-control': 'no-cache, no-store, max-age=0, must-revalidate', 'content-type': 'application/json', 'date': 'Wed, 15 Nov 2023 18:56:46 GMT', 'expires': '0', 'pragma': 'no-cache', 'www-authenticate': 'Bearer error="invalid_token", error_description="invalid token"', 'x-content-type-options': 'nosniff', 'x-frame-options': 'DENY', 'x-line-request-id': '1dc29e2a-6d8a-4260-8c38-19c64b9b0880', 'x-xss-protection': '1; mode=block', 'content-length': '104'}

実際のjsonファイル全角スペースなども入っていない。また、値も再発行して新しくコピペした。(クリップボートのボタンそのままクリック)加えて、jsonファイルの形式もしっかり守った。VScodeでエラーが検知されていないので正しいと思う。
イメージ説明

### 該当のソースコード ```ここに言語名を入力 import json from linebot import LineBotApi from linebot.models import TextSendMessage file = open('info.json','r') info = json.load(file) CHANNEL_ACCESS_TOKEN = info['CHANNEL_ACCESS_TOKEN'] line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN) def main(): USER_ID = info['USER_ID'] messages = TextSendMessage(text='こんにちは') line_bot_api.push_message(USER_ID, messages=messages) main() ---------------------------------------------------------------------------------------------------- jsonファイルである。(一応中身の値は伏せてある。本来元々コピペしたので間違っていないと思われる。 { "CHANNEL_ACCESS_TOKEN":"aaa", "USER_ID":"aaa" }

試したこと

print(f"CHANNEL_ACCESS_TOKEN: {CHANNEL_ACCESS_TOKEN}") print(f"USER_ID:{USER_ID}") CHANNEL_ACCESS_TOKEN: your_token USER_ID:your_user_id 一語一句そのまま記載する。AIに聞いた程度だが正常っぽい

・コピペし間違えてないか?再発行してクリップボートボタンをクリックしたので間違っていないと思われる。
・参考にしたサンプルプログラムと違いがないか確認したが間違ってなかった。
・jsonファイルの形式の確認→正しい形式で記述出来ていたし、デバッグモードで実行し辞書として取り出せていると考えた。

補足情報(FW/ツールのバージョンなど)

python3.8系
VScodeで開発,windows PowerShell,win11です。
https://www.youtube.com/watch?v=T0KAE2kq2Xo&t=2007s(参考にした動画)
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2023/11/16 01:10

コードを提示しよう
satokatogoto

2023/11/16 02:13 編集

エラーメッセージの欄に続けて書いてあります。 初心者で使い慣れていないもので、申し訳ないです。
can110

2023/11/16 04:28 編集

以下を提示すると回答得られやすくなると思います。 - 再発行~クリップボード操作時の画面(操作ミスはしていないか) - 参考にしたプログラムの出典(URL) - print(f'[{CHANNEL_ACCESS_TOKEN]}')などしてみて、それが意図した値と一致しているか(スペースなど含まれていないか) - OS、ターミナルなど実行環境の詳細(Herokuなどではないか) いずれも実際の値は伏せてください。
satokatogoto

2023/11/16 08:36

更新しました。値は正常に取り出せているっぽいです。
guest

回答1

0

自己解決

仮想環境ではなく、ローカル環境に戻したら出来ました

投稿2023/11/16 12:51

satokatogoto

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問