Python TwitterAPIを使って投稿する手順書
1. https://developer.twitter.com/ja/docs/twitter-api
2. 登録を押す
3 . 認証画面に遷移するので、APIを使いたいアカウントでログインする
4. 有料をめっちゃ進めてくるので一番下に小さく案内のある"Sign up for Free Account"をクリックする
5. 利用目的を聞かれるので回答する
6. Dashboard画面に遷移する
7. PROJECT APPの歯車をクリック
8. Projects & Apps画面に遷移するので、画面下の”User authentication settings"のEditをクリックする
9. APIを使って投稿したいのならApp permissionsをRead and writeもしくはRead and write and Direct messageに変更する
10. Type of AppをWeb App, Automated App or Botにする
11. App infoにcallback URI/ Redirect URLを設定する※繋がればなんでもいいらしい
12. Projects & Apps(手順8.の画面)上部のKeys and tokensをクリック
13. Consumer Keys,Authentication Tokens,OAuth 2.0 Client ID and Client SecretをRegenerateする
!!!!!!!!!!!!!!!!!!!!!!!!!!!
手順9,10,11(App permissions)に関連するものを変更した場合は必ずRegenerateしないとダメです。
!!!!!!!!!!!!!!!!!!!!!!!!!!
といっても、全部する必要はないっぽいAccessToken and Secretだけで大丈夫そう。※私はわからなかったからとりあえず全部Regenerateしました。
Regenerateしたらパスワードが出るのでメモ忘れず!メモし忘れたら再度Regenerate!
Regenarateを押したら真っ白な画面になり何も表示されないことが2回ほどあった。
キャッシュかなにかが原因??原因不明、キャッシュクリアとかやれば直るかと。※自分はトイレ行って戻ってきてから再度Regenerateしたらいつの間にか改善しました。
14. Pythonプログラムを書く
tweepyが簡単だったのでtweepyを利用しました。
import tweepy
import configparser
configparser = configparser.ConfigParser()
# 認証情報を設定ファイルから読み込む
configparser.read('config.ini', encoding='utf-8')
consumer_key = configparser["TwitterAPI"]["CONSUMER_KEY"]
consumer_secret = configparser["TwitterAPI"]["CONSUMER_SECRET"]
access_token = configparser["TwitterAPI"]["ACCESS_TOKEN"]
access_token_secret = configparser["TwitterAPI"]["ACCESS_TOKEN_SECRET"]
bearer_token = configparser['TwitterAPI']['BEARER_TOKEN']
# OAuthHandler オブジェクトを作成
client = tweepy.Client(bearer_token=bearer_token,
consumer_key=consumer_key,
consumer_secret=consumer_secret,
access_token=access_token,
access_token_secret=access_token_secret)
client.create_tweet(text="Hello World", user_auth=True)
X(旧:Twitter)を確認すると
ツイートできました。
以上
その他GitHubで公式サンプルコードを試す場合はhttps://github.com/twitterdev/Twitter-API-v2-sample-code/blob/main/Manage-Tweets/create_tweet.py
行き詰まったとこ
APIとは関係のない、configparserでエラーが発生していました。
使い慣れていないconfigparserを使ったのが原因です。
以下のようなconfig.iniを作成しました。
[TwitterAPI]
CONSUMER_KEY="AAAAA"
CONSUMER_SECRET="BBBBB"
ACCESS_TOKEN="CCCCC"
ACCESS_TOKEN_SECRET="DDDDD"
BEARER_TOKEN="EEEEE%EEEE%EEEE"
CLIENT_ID="FFFFF"
CLIENT_SECRET="GGGGG"
REDIRECT_URI="HHHHH"
上記の書き方は間違っています。
間違いポイント
1. 文字列を" "で囲む必要はない。これをするとキーが正しく認識されません。
試しに出力すると
"AAAAA"ではなく'"AAAAA"'という文字列になります。キーの文字列正しいのになんで?ってなりました。このエラーというか挙動に気付くまで結構時間がかかりました。
2. %が文字列中に入っているとエラー
これはエラーの出力があるのですぐに解決できました。
以上を踏まえて正しく記述すると
[TwitterAPI]
CONSUMER_KEY=AAAAA
CONSUMER_SECRET=BBBBB
ACCESS_TOKEN=CCCCC
ACCESS_TOKEN_SECRET=DDDDD
BEARER_TOKEN=EEEEE%%EEEE%%EEEE
CLIENT_ID=FFFFF
CLIENT_SECRET=GGGGG
REDIRECT_URI=HHHHH
となります。
この記事が気に入ったらサポートをしてみませんか?