Twitter API v1でツイートができなくなったのでv2に対応する
Twitter API v1は徐々に使える機能が減らされていて、現在FreeとBasicプランではOnly Media Upload and Login With Twitter
しかできなくなっています。v1からv2への移行作業についてご説明します。
ツイッターは、イーロン・マスクさんが経営を始めてから激動の時代に突入していますね。少しつぶやくだけのボットは、今後も無料の範囲内で使えると嬉しいです。
V1 APIが使える機能はメディアアップロードとツイッターログインだけ
Developer Platformに、ツイッター開発者契約(Free, Basic, Pro, Enterprise)と制限についてまとめられています。
Getting Started with the Twitter API | Docs | Twitter Developer Platform
FreeとBasicの契約であれば、Access to standard v1.1
はOnly Media Upload and Login With Twitter
と書かれています。以前はツイートするだけであればv1も許可されていたのですが、それも制限されて現在はメディアアップロードとログインだけです。
今まで使っていたライブラリ TwitterAPI がうまく動かない?
TwitterAPIというツイッターAPIのラッパーを使おうとして動かしてみたのですが、以下のエラーが出てしまいます。
GitHub - geduldig/TwitterAPI: Minimal python wrapper for Twitter’s REST and Streaming APIs
test/twitter/test_twitter.py {"client_id":"hoge","detail":"When authenticating requests to the Twitter API v2 endpoints, you must use keys and tokens from a Twitter developer App that is attached to a Project. You can create a project via the developer portal.","registration_url":"https://developer.twitter.com/en/docs/projects/overview","title":"Client Forbidden","required_enrollment":"Appropriate Level of API Access","reason":"client-not-enrolled","type":"https://api.twitter.com/2/problems/client-forbidden"}
Developer Portalの画面上は、プロジェクトの下にアプリケーションがぶら下がっているように見えるのですが。。。そもそもv1とv2で何が変わったのかなど全くわかっていないし、この際ラッパーを使わずAPIを直接叩くようにした方が良いかなと思い始めました。
ツイッター公式のサンプルを使う
ツイッターが用意しているサンプルプログラムcreate_tweet.pyがありました。
中身を読んでみたら、V2ではAPIを叩くアプリをアカウントの連携アプリとして承認し、その際に取得したoauth_tokenをアクセストークンとして使うみたいです。V1では、Developer Portalから発行したConsumer KeysとAccess Token and Secretを使っていた記憶があります。
サンプルプログラムを修正して、連携アプリを承認し、PINコードを入力し、取得できたoauth_token
, oauth_token_secret
をアクセストークンにしてv2のエンドポイントhttps://api.twitter.com/2/tweets
を叩いたところ、無事にAPI経由でツイートできました。
なお、私はPython版しか見ていませんが、他の言語(JavaScript, Ruby)のサンプルプログラムも公開されています。
Twitter-API-v2-sample-code/Manage-Tweets at main · twitterdev/Twitter-API-v2-sample-code · GitHub
私が作業中に飲んでいるコーヒーや欲しいマンガなどを集めました。開発・執筆の励みになりますのでクリックして頂ければ幸いです。
<Amazon欲しいものリスト>