pythonでtwitterAPIを叩いてダイレクトメッセージを送る

2020年12月21日

pythonでtwitterAPIを叩いてダイレクトメッセージを送る

twitterと連携したアプリケーションを作成中です。
表題の件の通りpythonを使ってDMを送ってみます。
参考:TwitterのAPIを使ってダイレクトメッセージを送る

コード

これに至ってはもう参考そのまんまです。


#coding: utf-8
import json
from requests_oauthlib import OAuth1Session

CONSUMER_KEY    = 'xxxxxxxxxx'
CONSUMER_SECRET = 'xxxxxxxxxx'
ACCESS_TOKEN    = 'xxxxxxxxxx'
ACCESS_SECRET   = 'xxxxxxxxxx'

twitter = OAuth1Session(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET)

headers      = {'content-type': 'application/json'}
url          = 'https://api.twitter.com/1.1/direct_messages/events/new.json'
target_id    = "1018853452531634176" #送付相手のidを入力
message_text = "Hello World!" #メッセージを入力

payload = {
            "event": {
                "type": "message_create", "message_create": {
                    "target": {
                        "recipient_id": target_id 
                    }, 
                    "message_data": { 
                        "text": message_text,
                    } 
                }
            }
        }
payload = json.dumps(payload)
res = twitter.post(url, headers=headers, data=payload)
print (res)

はまったところ

レスポンスで403が発生してしまいました。


<Response [403]>

これを解決するには2点注意が必要でした。
1.APIのパーミッションを変更する
2.パーミッションを変更した上で再発行したトークンを使用する

APIパーミッション変更

トークンの再発行

以上です!

2020年12月21日