自動でTwitterのツイートをしてみたいという話を聞いて、ちょっと作ってみたがハマった話
#CONSUMER_KEYがない
色々なサイトを見て検索するとpythonからツイートをするにあたって必要な項目が4項目あります。
CONSUMER_KEY,
CONSUMER_SECRET,
ACCESS_TOKEN,
ACCESS_SECRET
が必要と出てくるのですがどう見てもCONSUMER_KEYとCONSUMER_SECRETがない!
ただ、どうやっても見つからないので検索すると
CONSUMER_KEYはAPI KEYで
CONSUMER_SECRETはAPI_key_secretでいいそうです。
検索すればよく見るコードですが下記のコードに変数を変更しました。
このほうが理解しやすいと思います。
import json
from requests_oauthlib import OAuth1Session
#ここにKeyとToken
API_KEY = 'XXXXXXX'
API_KEY_SECRET = 'XXXXXXX'
ACCESS_TOKEN = 'XXXXXXX'
ACCESS_TOKEN_SECRET = 'XXXXXXX'
twitter = OAuth1Session(API_KEY, API_KEY_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
url = "https://api.twitter.com/1.1/statuses/update.json"
print(twitter)
tweet = "Pythonからのテストツイートです\r改行する\r\n改行\n改行" # ツイート内容
params = {"status" : tweet}
req = twitter.post(url, params = params) #ここでツイート
if req.status_code == 200: #成功
print("Succeed!")
else: #エラー
print("ERROR : %d"% req.status_code)
#401エラーでツイートができない
API_KEYを取ったあと上記コードで実行を行っても
ERROR : 401
で全然ツイートができない。このケースは設定漏れでした。401の通り、権限なしでした。
まず、最初の設定は読み込みのみなので書き込みもできるように設定を変更しました。
ただ、401エラーは継続です。
なんで出来なかったか。
多分ですがあとは読み込み & 書き込み設定に変更したあとに
再度ACCESS_KEYを取り直すこと(regenerate)。
再度取得しないと読み込みしか出来ないACCESS_KEYを使用している状態で書き込みができないのだと思われます。
それでも401エラーダメな場合は何度か取得して変数に代入してみてください。
#参考資料