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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

2186閲覧

Windows環境で、pythonでLINEに通知する

tomomonX

総合スコア28

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/07/22 20:43

編集2021/07/23 03:42

前提・実現したいこと

pythonを使ってLINEに画像を送りたいです。

###発生しているエラー

<Response [400]>のエラーが返ってきます。
原因はおそらくMacとWindowsの違いだと思っています。(おそらくですが。。)
動画の内容ではMac、私の場合はWindowsです。

import requests #必要な変数を設定 #取得したトークン TOKEN='取得したトークン'#←人によって違う api_url='https://notify-api.line.me/api/notify' #通知内容 send_contents='キノコード' #情報を辞書型にする TOKEN_dic={'Authorization':'Bearer'+' '+TOKEN} send_dic={'message':send_contents} #画像ファイルのパスを指定 image_file = './test.png' #バイナリデータで読み込む binary = open(image_file, mode='rb') #指定の辞書型にする image_dic = {'imageFile': binary} #LINEに画像とメッセージを送る requests.post(api_url, headers=TOKEN_dic, data=send_dic, files=image_dic)

試したこと

アドレスの前にrをつける、\を/にしてみる、
他に下記の文章を送るだけのコードは問題なくLINEに送信できています。

import requests #必要な変数を設定 #取得したトークン TOKEN='取得したトークン'#←人によって違う api_url='https://notify-api.line.me/api/notify' #通知内容 send_contents='キノコード' #LINE通知を送る(200:成功時、400:リクエストが不正、401:アクセストークンが無効) requests.post(api_url,headers=TOKEN_dic,data=send_dic)

わかる方教えてください。特にWindowsの方またはWindowsがわかる方の回答だと助かります。

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

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

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

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

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

guest

回答3

0

エラーコード400 リクエストが不正 
なので認証情報に誤りがあるとのことです。
https://developers.line.biz/ja/reference/line-login/#verify-access-token-error-response
MacやWindowsは関係ないと思われます。

投稿2021/07/23 00:09

odataiki

総合スコア938

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

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

tomomonX

2021/07/23 03:43

ありがとうございます。送る画像を変えたら送信できました。容量オーバーが原因でした
guest

0

ベストアンサー

Windows10/Python 3.9.1/requests 2.26.0の環境で
発生しているエラーのプログラムを実行したところ
(TOKEN以外書き換えなしで)正常に自送信することができていますので、
@odataikiさんのおっしゃる通り認証情報~~(具体的にはTOKENの値)~~に誤りがあると思います。

再度LINE NotifyよりTOKENを発行して試してみてはいかがでしょうか。
TOKENの値が間違っている場合は401エラーが返ってきますので上記の指摘は間違えておりました。
LINE Notifyドキュメント - 通知系 - POST https://notify-api.line.me/api/notify - レスポンスの欄

下記のようにコードを修正し実行してみてください。

python

1response = requests.post(api_url, headers=TOKEN_dic, data=send_dic, files=image_dic) 2print(response.text)

{"status":400,"message":"message: must not be empty"}
このような形で表示されると思います。(例はsend_dicの値を空にした場合)
messageの欄に具体的なエラー内容が表示されますので、そこを見て修正してみてください。

投稿2021/07/23 02:39

編集2021/07/23 03:01
Alma-field

総合スコア108

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

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

tomomonX

2021/07/23 03:44

ありがとうございます。送る画像を変えたら送信できました。容量オーバーが原因でした。 原因特定方法教えていただき助かりました。
guest

0

画像のpathを、現状の相対pathではなく

image_file = 'c:/python/projects/line_test/test.png'

のように、フルpathに変えた場合はどうでしょうか。
(上記のpathは例です。実際に送信したい画像のpathに変えてください)

投稿2021/07/23 01:55

編集2021/07/23 01:57
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tomomonX

2021/07/23 03:43

ありがとうございます。送る画像を変えたら送信できました。容量オーバーが原因でした
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問