Twitter OAuthの操作の権限はもう少し細分化できませんかね

Tags: webdev

Twitter API 1.1での評判の悪い制限事項や各種リミットが、少しは改善されたりするんでしょうかねえ。なんにせよ、開発者にとって良い方向に進んでくれるとありがたいのですが。


個人的にTwitter APIで個人的に最も不満に思っているのは「OAuthでできる操作の権限が大雑把すぎる」という点。本件、すでに語り尽くされている感もあるが、簡単に説明すると、TwitterのOAuthの権限は以下の3段階しかなく、不要な権限がセットでついてきて痛くもない腹を探られてしまうというお話。

  • Read only (読み取り専用)
  • Read and Write (読み取りと書き込み)
  • Read, Write and Access direct messages (読み取りと書き込みとDMのアクセス)

最も典型的なケースを例にすると、例えば「(認可を得たユーザーのアカウントで)単にツイートだけ行いたい」というアプリ(Webサービス)を作りたい場合、「Read and Write (読み取りと書き込み)」レベルの権限が必要になるが、この権限には以下の3つの操作が含まれている。

  • ツイートする
  • 新しくフォローする
  • プロフィールを更新する

(アプリ認可画面の例)

このように、「ツイートする」操作の権限がほしいだけなのに、「新しくフォローする」だの「プロフィールを更新する」といった穏やかでない操作の権限も押し付けられてしまう。その結果、ユーザーがアプリ認可の画面を見て「なんでツイートするだけのアプリでこんな権限が必要なの……?」と疑問に思い、下手をするとトラブルの火種になったりする。

実際、この仕様に端を発する騒動はTwitter上で定期的に起きていて、「○○というアプリ、必要以上の権限を要求していてすごく怪しい! 危険です!! 拡散希望!!!」みたいなツイートを見かけるたびに「またか……」とげんなりした気分になる。1


この問題が不幸なのは、ユーザーとしてはアプリ認可の際に権限を気にかけるというのはまったくもって正しい態度であり、Twitterが出しているアプリ認可画面で「新しくフォローする」「プロフィールを更新する」と書かれている以上、ユーザーとしては実際にそういったことが行われている(可能性がある)と判断するのはまったくもって妥当な推論であるということ。もちろん、現状のTwitter OAuthまわりの事情を知っている開発者なら「これは仕方ないんですよ……」ということは分かっているけど、一般ユーザーにこのあたりを理解してよというのは無理がある。2

また、アプリ認可画面にて(開発者側からは3段階の指定しかできないにもかかわらず)許可される操作が箇条書きで細かく列挙されている点も、不要な誤解を招く一因となっている感がある。3 あの画面を見れば、いかにも個々の操作の権限が個別に指定できるように見えるわけで、あたかもアプリ開発者が意図的に「新しくフォローする」「プロフィールを更新する」の権限を有効にしているかのように見えてしまう。

アプリ開発者側として対策できることがあるかというと、なかなか難しそう。アプリの説明にて「アプリ連携の画面では“新しくフォローする”や“プロフィールを更新する”といった操作が許可されると表示されますが、実際にはそのような動作は行いません」といった注意書きを書きたくなるが、これはあまり筋がいい対応ではないように思える。アプリ開発者側が「システム側ではこう言っているけど、実態は違うので無視してください」みたいなことを言うのは、かつての「オレオレ証明書」の問題を思い起こさせる。ユーザーが信用するべきなのはあくまでTwitter側が出す説明文だけ、というのがあるべき姿であり、アプリ開発者側の出す説明文の方を信用するような風潮が蔓延するのはあまりよろしくないし。

結局のところ、本件、Twitter側で権限を細分化してもらう以外に根本的な解決策がなさそう。せめて、現状の「Read and Write (読み取りと書き込み)」から「Read and Tweet (読み取りとツイート)」みたいに一部だけ分離するだけでもいいので、対応してくれませんかねえ……。


  1. 実際問題、騒動の要因となっているアプリがあやしい動作をしていそうな事例も多いものの、「必要以上の権限を要求」しているかどうかというとたいていはそんなことはなく「(Twitterの現状の仕様上)必要最小限の権限」である場合がほとんど。
  2. まあそうは言っても、「不要な権限を得ている」と「不要な権限を使っている」の間には相当な距離があるわけで、騒ぐ前にもう少し慎重になってほしいとは思う。
  3. とはいえ、ユーザーにとっては許可される操作が箇条書きで列挙されている方がどう見ても分かりやすいので、文句は言えない。昔のアプリ認可の画面では「アクセスしたり、データーを更新」といった抽象的な表現だったとのことで、それと比べると、現在の表現の方が圧倒的に正しい。