Twitter の OAuth のパーミッションレベルが新しくなり,標準ではダイレクトメッセージにアクセスできなくなるようです.
また,xAuth などで認証している「サードパーティ」アプリケーションは新パーミッションレベルでも ダイレクトメッセージにアクセスできなくなるみたいです.
この改良は待ち望んでいたものの,xAuthでアクセスできなくなるのは痛いですね.
http://groups.google.com/group/twitter-api-announce/browse_thread/thread/e954fc0f8b5aa6ec?pli=1
からの翻訳です.
また,移行期間の変更について http://groups.google.com/group/twitter-development-talk/msg/dbe591c0088a4b18 で書かれている内容を反映しています.
そして以下の内容については保証しません.最新の情報はtwitter-api-announce,twitter-api-talkなどを見てください.
やあ.
わたしたちは最近,OAuth の認証画面でアプリケーションに渡される権限を わかりやすくする変更を加えました.Twitter ユーザー・デベロッパーから の貴重なフィードバックが私たちの変更を助け,どこをはっきりさせたほう がいいかを教えてくれました.
ユーザーとデベロッパー双方から,さらに細かいパーミッションレベルを 設定したいという要望が特に多かったです.
このフィードバックへの返答として,わたしたちは新たなパーミッション レベルを作成しました.それは "Read, Write & Direct Messages" です. このパーミッションレベルは Read, Write に加えダイレクトメッセージを Read, Delete することを許可します. そしてこのパーミッションを施行するとき,既存の "Read & Write" の パーミッションのアプリケーションはダイレクトメッセージをRead, Delete することができなくなります.
そしてまた,わたしたちはこのパーミッションを適用するのは OAuth のみに 絞りました.xAuth はこのパーミッションを適用することができず,OAuthの /authorize を用いた Web でのフローのみで適用されます.
これは,xAuth を使っていてダイレクトメッセージにアクセスする必要性があ る場合は OAuth と Web ページを利用して認証する必要があるということを 意味します.
この改善についてアプリケーションはにはどのような変更すれば良いのか?
もしダイレクトメッセージにアクセスする必要がない場合: あなたはアプリケーションに何も変更を加える必要はありません. この新パーミッションレベルが施行されるとき,あなたのアプリケーション に登録されている read もしくは read/write レベルのアクセストークンは ダイレクトメッセージにアクセスすることができなくなります.
もしダイレクトメッセージにアクセスする必要がある場合: あなたはまず, https://dev.twitter.com/apps からあなたのアプリケーシ ョンのパーミッションレベルを変更する必要があります. そしてそのパーミッションは既に存在しているトークンについては反映され ないので,ユーザーに再度認証してもらう必要があります.
わたしたちはこの変更に時間が必要なことを理解しています.そこで,2011/6/14までを移行期間とします.移行期間中は,まだ Read/Write レベルのトークンはこの変更の影響を受けませんが,移行期間が 終わってからはダイレクトメッセージにアクセス・削除することができなくなります.
影響を受ける API と リクエスト
REST APIに置いて,Read と Read/Write アプリケーションは以下のAPIを利用 することができなくなります:
/1/direct_messages.{format}
/1/direct_messages/sent.{format}
/1/direct_messages/show.{format}
/1/direct_messages/destroy.{format}
ストリーミングAPIについては, User Streams と Site Streams はユーザーが ダイレクトメッセージへのアクセスを認可した場合のみ,ダイレクトメッセージを 受信するようになります.
また, "Sign-in with Twitter" か xAuth を使っているアプリケーションは Read か Read/Write のトークンのみを得ることができるようになります.
つまりこれは,Webページを利用して OAuth 認証をするアプリケーションのみが ダイレクトメッセージに対してアクセスできるトークンを受け取ることができる という事です.その他のxAuthを含む認証手段は Read/Write レベルのトークン のみを受信するようになります.
このパーミッションが適用されたとき何が起こるのか?
わたしたちがこの新パーミッションレベルを適用したとき,全ての Read と Read/Write レベルのサードパーティアプリケーション向けのアクセストークン はユーザーのダイレクトメッセージを読めなくなります.あらゆるダイレクト メッセージの読み込みリクエストに対して HTTP 403 エラーを返すようになり ます.
たとえば,次のURL: https://api.twitter.com/1/direct_messages/sent.json に対して GET リクエストをすると HTTP 403 Forbidden ステータスコードと 以下のレスポンスボディーが返ってきます:
{"errors":[{"code":93,"message":"This application is not allowed to access or delete your direct messages"}]}
キーポイント
- もしユーザーのダイレクトメッセージにアクセスする必要がある場合,あなたは アプリケーションのパーミッションレベルを変更,またユーザーに再認証してもらい 新しいトークンを得る必要があります.
- ダイレクトメッセージにアクセス出来るのは OAuth /authorize web フローのみで す.たとえば,xAuth を利用して認証した場合ダイレクトメッセージへのアクセスは 許可されません.
- わたしたちがこの新パーミッションレベルを施行したとき,既存の全ての Read/ Write と Read パーミッションレベルのトークンはダイレクトメッセージにアクセス ,削除することができなくなります.
- ただし,Read/Write については施行後も引き続きダイレクトメッセージの送信は 許可されます.
わたしたちはまもなく新しい情報を developer resources permission model ページ に掲載します:
また,私たちは今回の件について twitter blog にエントリーしました:
Best, @themattharris