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.1Only 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がありました。

Twitter-API-v2-sample-code/Manage-Tweets/create_tweet.py at main · twitterdev/Twitter-API-v2-sample-code · GitHub

中身を読んでみたら、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欲しいものリスト

私が作業中に飲んでいるコーヒーや欲しいマンガなどを集めました。開発・執筆の励みになりますのでクリックして頂ければ幸いです。

<Amazon欲しいものリスト>