Twitterの連携アプリを登録する際、設定できる権限には「読み込み権限」、「読み込み・書き込み権限」の二種類しか存在しないということを知りました。
では、それぞれの権限で利用可能なAPIはどういったものが存在するのか、他のBlogではDMが送られたり、勝手につぶやかれたりといった多少曖昧な記載に留まっているので、APIを眺めてみました。
そもそも読み込み、書き込みといった権限の考え方についてはTwitterの公式サイトでは次の通りFAQに記載されています。
The application registration page asks about read/write access. What constitutes a write?
- -
Many users trust an application to read their information but not necessarily change their name or post new statuses. Updating information via the Twitter API - be it name, location or adding a new status - requires and HTTP POST. We stuck with the same restriction when implementing this. Any API method that requires an HTTP POST is considered a write method and requires read & write access.
OAuth FAQ
というわけで、GET以外のメソッドをサポートしているAPIはRead/Write権限が必要であると考え、こちらの日本語訳をコピペ参考にさせていただき、アクセス権限別のリストをまとめてみました。
Twitter API 仕様書 Twitter API 仕様書 日本語訳 第五十版 (2010年8月12日版) 日本語訳: tsupo
Read権限で実行可能なAPI(GETメソッドをサポートしているAPI)
TwitterAPI | 概要 |
statuses/public_timeline | 公開(かつ、自分のアイコンを設定済みの)ユーザの最新のステータス(発言)を取得する (最大20件) |
statuses/home_timeline | 自分と自分の friend の過去800件分のステータス(retweetを含む)から最大20件(count引数使用時は最大200件)を取得する。 |
statuses/friends_timeline | 自分の friend の過去800件分のステータス(include_rts 引数使用時は自分の friend の retweet も含む)から最大20件(count引数使用時は最大200件)を取得する。 |
statuses/user_timeline | 自分の過去3200件分のステータスから最大20件(count引数使用時は最大200件)を取得する。 |
statuses/replies | 自分に対する返信(冒頭が @ユーザ名 で始まるステータス)の一覧を取得する (最大20件) |
statuses/mentions | 自分に対する言及(@ユーザ名 が含まれるステータス)の一覧を取得する (最大20件) |
statuses/retweeted_by_me | 自分が投稿した retweet の一覧を取得する (最大20件) |
statuses/retweeted_to_me | 自分の friends が投稿した retweet の一覧を取得する (最大20件) |
statuses/retweets_of_me | 自分が投稿した発言のうち(自分以外の)誰かによって retweet されたものの一覧を取得する (最大20件) |
statuses/show | 指定した ID のステータス(1件)を取得する |
statuses/retweets | 指定したステータスを retweet しているユーザの一覧のうち最初の100人分を取得する |
statuses/id/retweeted_by | 指定したステータスを retweet しているユーザのうち最大100人分のユーザ情報を取得する |
statuses/id/retweeted_by/ids | 指定したステータスを retweet しているユーザのうち最大100人分のユーザIDを取得する |
statuses/friends | 自分の friend の一覧を(各 friend の最新ステータス付きで)取得する |
statuses/followers | 自分の follower の一覧を(各 follower の最新ステータス付きで)取得する |
users/show | 指定ユーザに関する詳細な情報を取得する。 |
users/lookup | ユーザIDまたはスクリーン名で指定したユーザに関する詳細な情報を取得する |
users/search | 指定条件に一致する Twitter ユーザを検索する。 |
users/suggestions | Twitter の “suggested user list”のカテゴリ(分類)一覧を取得する |
users/suggestions/category | Twitter の “suggested user list”のうち、指定したカテゴリ(分類)の内容を取得する |
direct_messages | 自分宛てのダイレクトメッセージの一覧を取得する (最大20件) |
direct_messages/sent | 自分が送信したダイレクトメッセージの一覧を取得する (最大20件) |
friendships/exists | 指定した2ユーザの間の friend 関係を調べる |
friendships/show | 指定した2ユーザの間の関係を詳細に調べる |
friendships/incoming | (自分が protected なユーザである場合に、)自分にフォローリクエストを送っているユーザのうち、リクエストを保留中のユーザのID一覧(配列)を取得する |
friendships/outgoing | 自分がフォローリクエストを送っている(がまだ承認してもらえていない)protected なユーザのID一覧(配列)を取得する |
friends/ids | 自分の、あるいは指定したユーザが follow しているユーザ(friends)のID一覧(配列)を取得する |
followers/ids | 自分を、あるいは指定したユーザを follow しているユーザ(followers)のID一覧(配列)を取得する |
account/verify_credentials | (BASIC認証による)セッションを開始する。認証に成功すると HTTP 200 OK の応答とともに当該ユーザに関する情報(と cookie)が返る。 |
account/end_session | verify_credentials で開始したセッションを終了する(本API実行後、空の cookie が返る) |
account/rate_limit_status | 自分の「API 制限状況」(この1時間以内にあと何回APIを実行できるか)を取得する。本APIの実行自体はAPI制限の対象外である(何回でも実行できる) |
favorites | 自分または指定したユーザの favorites(お気に入り) に登録されている「発言」のうち、最新のものから最大20件取得する |
blocks/exists | 指定したユーザをブロックしているかどうかを調べる。 |
blocks/blocking | 自分がブロックしているユーザの一覧を取得する |
blocks/blocking/ids | 自分がブロックしているユーザのID一覧(配列)を取得する |
Read&Write権限で実行可能なAPI(GETメソッドをサポートしていないAPI)
TwitterAPI | 概要 |
statuses/update | 自分のステータスを更新(update)する。引数 status は必須。 |
statuses/destroy | ステータスを削除する。ステータスIDの指定は必須。 |
statuses/retweet | 指定したステータスを retweet する。ステータスIDの指定は必須。 |
direct_messages/new | ダイレクトメッセージを送信する。宛先と本文の指定は必須。 |
direct_messages/destroy | ダイレクトメッセージを削除する。メッセージIDの指定は必須。 |
friendships/create | 指定ユーザを自分の friend (following) にする |
friendships/destroy | 指定ユーザを自分の friend (following) から外す |
account/update_delivery_device | 自分の device を設定する |
account/update_profile_colors | Twitter 上の自分の profile ページの色を設定する |
account/update_profile_image | 自分の profile ページの画像(ユーザアイコンとしても使用される)を設定する |
account/update_profile_background_image | 自分の profile ページの背景画像を設定する |
account/update_profile | 自分の profile (アカウント情報) を変更する |
favorites/create | 指定ステータスを自分の「お気に入り」に登録する。 |
favorites/destroy | 指定ステータスを自分の「お気に入り」から外す。 |
notifications/follow | 指定ユーザ(following)の発言を「指定デバイス」に送信するようにする |
notifications/leave | 指定ユーザ(following)の発言を「指定デバイス」に送信するのをやめる |
blocks/create | 指定ユーザをブロックする。指定ユーザが friend だった場合、friend から外した上でブロックする |
blocks/destroy | 指定ユーザのブロックを解除する |
これを見ると「読み込み権限」だけでも様々な情報の取得がすべて出来ることが分かります。たとえば、ダイレクトメールの内容やブロックしている相手などの情報も取得できます。このように様々なAPIが公開されている反面、それに伴う認可の細かい分類は全くない状態でもあるので、前回のエントリーでは漠然的に気を付けましょうなんて書いていましたが、改めて。連携アプリから要求が行われた際は上記内容が行われても問題ないという前提で許可をすることをお勧めいたします。