Twitter api でDMが送れない。 /direct_messages/events/new.json
Twitter apiを利用してDMを送る機能を実装しているのですがstatus_codeが400が返ってきてしまいます。
他のapiを正しく利用できているため、認証認可の部分は大丈夫だとおもうので、URLリクエスト時のパラメータがおかしいと考えておりますが、原因がわかりません。
※ pythonのバージョンは、2系でも3系でもだめでした。
コードは下記です。
# coding: utf-8 import json, config import sys import requests from requests_oauthlib import OAuth1Session CK = config.CONSUMER_KEY CS = config.CONSUMER_SECRET AT = config.ACCESS_TOKEN ATS = config.ACCESS_TOKEN_SECRET twitter = OAuth1Session(CK, CS, AT, ATS) # URL for keyword search url = 'https://api.twitter.com/1.1/direct_messages/events/new.json' params = {"event": {"type": "message_create", "message_create": {"target": {"recipient_id": xxxxxxxxxxx}, "message_data": {"text": "Hello World!"}}}} # API call res = twitter.get(url, params = params) timelines = json.loads(res.text) if res.status_code == 200: #正常通信出来た場合 print("成功") else: #正常通信出来なかった場合 print("Failed: %d" % res.status_code)
実行結果
$ python send_to_dm.py Failed: 400
よろしくおねがいします。
ステータスコード以外にどのようなメッセージが返ってきているでしょうか? たとえば、認証エラーだと このような本文が返ってきます。` {"errors":[{"code":215,"message":"Bad Authentication data."}]} `
申し訳ございません。getとpostを間違っておりました。`res = twitter.get(url, params = params)`の部分をget→postに変更したところ、422のエラーコードが返ってくるようになりました。リファレンスをみると『 POST account / update_profile_bannerへアップロードされた画像を処理することができない場合に返ります。』のようです。
http://westplain.sakuraweb.com/translate/twitter/API-Overview/Error-Codes-and-Responses.cgi
また、エラーメッセージもリクエスト結果を格納している変数(res)をprint しても`<Response [422]>`がでてくるぐらいになります。
また、PHP版で動いているソースは以下の記事にありました。https://blog.fkoji.com/2018/07240244.html
回答1件
あなたの回答
tips
プレビュー