【twitter API V2】自動投稿プログラムの作り方
計測データを定期的に記録するためにTwitterを利用していました。Twitterを利用すると、自前のWEBサーバーが不要で、積み上がっていくデータも管理しなくて良いので楽です。
しかし、デフォルトではTwitterの自動投稿に使うAPIがAPI V2しか使えなくなり、昔のように簡単に自動投稿できなくなってしまいました。
色々調べたのですが、日本語の資料がまだほとんどなかったので、このサイトにまとめておきます。
目的と環境
私がTwitter APIを使用した目的は計測した温度を一定の時間間隔でツイートして、遠隔地から温度制御が正しく行われているか確認するためです。
温度はI2C接続のBME280というセンサーをRaspberry PIに接続して10分おきに測定しました。このラズパイはネットワークにつなげていたので「自分のスマホに温度を一番楽に表示させる方法は?」を考えたときにTwitterの自動投稿が一番ラクかなと思い、試して見ました。
測定結果はラズパイ中のテキストファイルに自動で書き込まれていくので、このファイルを1時間に一回ツイートさせます。言語はPythonを使用し、cronを使って1時間に一回コマンドを実行します。
ラズパイのOSはraspbianを使っています。/etc/debian_versionは9.11です。
API V2の使い方1 デベロッパープラットフォームに登録
API V2を使うためにはAPIのKEYとSECRETをTwitterから取得する必要があります。これらは両方とも数十文字のハッシュ値です。このKEYとSECRETをもらうためにはデベロッパープラットフォーム(developer.twitter.com)に登録する必要があります。
すでにデベロッパープラットフォームに登録が済んでいる人はこの手順は不要です使い方1は飛ばしてください。
デベロッパープラットフォームに登録するためには確認済みの電話番号が必要です。電話番号が確認されていないとデベロッパープラットフォームの登録中に「エラー 確認済み電話番号が必要です」とメッセージが出ますが、どのように電話番号の確認をすればよいかが出ないのでかなり戸惑います。
電話番号の確認はtwitter.comで次の手順で行います。この手順はhttps://help.twitter.com/ja/managing-your-account/which-is-my-mobile-phone-accountで説明されています。
- パソコンでtwitter.comに移動します。このリンクは、Twitterからログアウトしている場合にだけ機能します。
- ホームにある [アカウントを有効にしてください] のリンクをクリックします(下図参照)。
- 指示に応じて、電話番号と国番号を入力します。
- Twitterアカウントに携帯電話番号が登録されている場合、認証コードが記載されたショートメールがご利用の携帯電話に送られます。このコードを使って、その番号が自分の携帯電話番号であることを確認します。
- 次のページでは、Twitterプロフィールの入力をしてください。ユーザー名は既に入力されています。このユーザー名は、携帯電話番号が登録されているアカウントのものです。
上記の手順で電話番号の確認ができたらデベロッパーポータルに登録します。
- https://developer.twitter.comを開く
- 右上の自分のアイコンをクリックし “sign in”を選ぶ
- 本名、職種、API使用の目的などを記入(もしかすると自分のWEBサイトのアドレスがないと先に進めないかも?)
- 全部記入して登録
これでデベロッパープラットフォームに登録ができました。
API V2の使い方2 アプリの登録
デベロッパーポータルに移動します。https://developer.twitter.com/en/portal/
アプリが登録されていなければ、デベロッパーポータルの真ん中ちょっと下のほうに「Create App」のボタンが表示されていますので、このボタンを押してアプリを登録します。
途中、アプリの用途やコールバックURL、WEBサイトのURLを入力させられます。たぶん自分のサイトを持っていないとAPIの使用はできないんじゃないかと思います。
アプリの登録ができたら、登録したアプリに上書き権限を与えます。アプリのSettingsのページにあるUser authentication settingsの項目のEditボタンを押します。
User authentication settingsの設定ページになるので認証の方法にOAuth 1.0aを選択しその下のApp PermisstionをRead and writeにします。
最後に一番下のsaveボタンを押して終了です。
API V2の使い方3 キーの発行
API V2の利用には4つのキーが必要です。アプリ登録の際にキーを作成、表示するのですが、ここではキーを再発行する手順を紹介ます。キーを再発行すると以前のキーは使えなくなるので注意してください。
アプリのページの一番上に「Settings」と「Key and tokens」の2つのタブがあるのでKey and tokensを選びます。
このページでConsumer KeysとAuthentication TokensのAccess Token and SecretをRegenerateします。それぞれKeyとSecretが表示されるので記録してください。
Bearer Token はOAuth2で使用されるのでここでは必要ありません。
API V2の使い方4 プログラムの作成
取得したキー達をプログラムに書き込めば自動投稿が可能です。
GitHubにTwitter公式の自動投稿のサンプルがありますので参考にしてください。
自動投稿のサンプルはManage-Tweets>create_tweetにあります。
このサンプルでは実行過程でTokenのキーを取得するようになっていますが、自動投稿の場合は対話型の処理ができないので、サンプル中のresource_owner_keyにaccess_token、resource_owner_secretにaccess_token_secretを直接代入します。
このプログラムを実行して自分のツイッターにHello Worldが表示されれば成功です。
最後に注意点
このようなWEBサービスで不具合があると、自分の書いたコードを点検するのが普通の手順だと思いますが、TwitterではOAuthの種類やプロジェクトの権限などが正しく設定されていなければうまく投稿できません。
APIにうまくリクエストが渡っていても、設定の理由でアプリが動かない場合はサンプルプログラムの最後でエラーコード403が返ってきます。403が返ってきたらTwitter側の設定を疑ってください。
私もこれで半日ほどハマりました。皆さんも気をつけてください。