随分前の話になると思います。twitterのアプリ(俗に言うbot)は、dev.twitter.comに登録する段階で権限を付与してやる必要があります。その権限がいつの間にか変更されていました。結果、私の作成したbotが動いていなかったので、原因を調べました。そのノウハウです。
殆ど忘れてたので、OAuthの復習になりました。
権限
今までの権限
今までは、単純にread権限と、write権限のみ制御できていました。つまり、botに対してどちらの権限を付与するか決めていました。
言い換えると、twitterアプリ(bot)を使用するユーザ(bot専用アカウント)に対し、どの権限を明け渡すよう要求するか、ということを設定していました。この表現を覚えておいてください。
- Read only
- Read and Write
これからの権限
これからというか、この権限が追加されたのは、だいぶ前だと思います。botが動いていないのは知っていたのですが、対応するのが面倒で、ずっと放置していましたから。
端的に言うと、どうやらDMに対するアクセスを個別に制御できるようになったということのようです。私のbotはDMにアクセスできることが前提です。今まではRW権限で動作していましたが、DM権限が切り出されたために今までのRW権限ではDMにアクセスできず、弾かれてエラーを吐いていたみたいですね。
ということで、dev.twitter.comに登録している、botがユーザに要求する権限の変更を行わなければなりません。
- Read only
- Read and Write
- Read, Write and Access direct messages
手順書
大まかに
- dev.twitter.comにアクセスして、botを登録しているユーザ(つまり制作者)でログインする。
- https://dev.twitter.com/appsにアクセスして、該当(権限をDM権限に変更したいbot/アプリ)のものを選択する。
- SettingsタブのApplication Type項目より、「Read, Write and Access direct messages」を選択する。そして、Update this Twitter application’s settingsボタンをクリックして、設定を保存する。
- OAuthTokenを取得し直す必要があります。DetailsタブのYour Access Token項目より、OAuthTokenを取得しなおしてください。
- 後は、phpでtwitterbotを作ってみたい(準備)の、twitterでbotを認証してもらう、の項目より、ユーザ(bot専用アカウント)にbotを認証させます。
- phpプログラムの中にOAuthTokenなどを埋め込んでいたと思うので、それらを変更して完了です。
何も覚えてなかったので、少々手間取りました。