さくっとXアカウント作成してAPIキーなり取得したらPythonローカルアプリから投稿がすぐできるものだとおもったけれど、うまくいかなかった。
調べていて他の方もぶつかった壁としては
・APIのバージョンが二つ。OAuthが2種類あること。
・デフォルトでは読み込みonlyの権限をダッシュボードで投稿などができるように変更しておく必要があること。
・権限変更後はトークン類の再発行してそれを使用する必要があること。
それぞれ無料プランではできることできないことがあったりで同じ投稿機能にしてもなかなかややこしい。
Xでは新しいをベースとしてドキュメントをつくるが、かなり使いこなす人向けっぽい。
自分にとって適当な組み合わせは
X API v2 と OAuth 1.0の組み合わせ。
でTweepyではよく過去の手法としてでてくるtweepy.API()ではなくtweepy.Clinent()を使う必要があった。
ChatGPTもtweepy.API()を使うようにするし、上記のOAuthの設定が定まってなかった。
ここらへんやほか権限設定も他の方々が詳しく設定操作画像などを掲載されているのでそちらを参照いただきたい。
勘違いで設定変更したらいけるのかとおもったけれど、ちゃんとその後も関連するトークン類は再発行と設定が必要。
でこれでできるはずだった。実際他の方々がやられているような設定自体は間違っていなかったので大変ありがたいのだが、自分はその後にハマった。
何をしても権限ないでとレスポンス。
で原因は.envがうまく通ってなかった。現象としては過去の変更したファイルの一部が反映されている様子。実行した時点では存在しなくなっているファイルの一部を読み込んで返している状況なのがわかった。
.envの変数を呼び出せるディレクトリで
unset XXXXXX(変数名)
と.envで使用する変数をいれることでシステムやセッションの古いキャッシュやほか競合しているところのデータを消すことで正常に読み込めるようになったみたい。
若干本筋のハマり方とは違うけれど、求めていた基本的な機能に対して、Xのいろいろな仕様変更などであまり使える情報が少なくなっていたので念の為メモ。
投稿だけならOAuth2.0関連トークンやBearetoken
ChatGPTだけに頼るとそこらへんでミスリーディングおきやすいかも。
あとちょっと注意点はトークン関連の種類が多いうえ、どれがどれを指すのか事例のコードも若干名称がちがったり、名前が一部被ってたりもややこしポイント。
参考サイト:
X API v2 authentication mapping
https://developer.x.com/en/docs/authentication/guides/v2-authentication-mapping
Tweepy
https://www.tweepy.org
tweepy + Twitter API V2でツイート
https://qiita.com/penguinprogrammer/items/b220be0c203eaaad015a
【Python】Twitter API v2を使ってツイートする
https://izadori.net/python-twitter/
【Python学習】Twitter API v2をつかって自動投稿 (tweepy利用)
https://vefortec.hatenablog.com/entry/PythonStudy_Tweepy