株式会社ライブキャストロゴ 株式会社ライブキャスト

google翻訳APIを使ったAIRアプリを作る!(Twitterに投稿編)でtwitterのAPIでサポートされている認証は、OAuth方式とBASIC認証と書きました。

Twitter API 仕様書 第二十版 (2009年4月16日版) より引用(2009/12/8時点の最新版です)。

どうやら、OAuth認証とBASIC認証をサポートしているようです。
とりあえずBASIC認証を使うことにします。

現在はXAuth方式もサポートされています。
ですが、BASIC認証が2010年6月30日に廃止されます。

以前リリースした簡易翻訳AIRアプリケーション、TranslatAIRが翻訳結果をtweetするという機能を持っていますが、BASIC認証を採用しているので、利用する認証方式を変更したいと思います。

@twitterapi’s countdown to Basic Auth removalでBASIC認証廃止へのカウントダウンが開始されています。

OAuthとは?

簡潔に説明するのはむずかしいので、参考サイトをご紹介します。
APIアクセス権を委譲するプロトコル、OAuthを知る - @IT

さらに調べていると、図付きでわかりやすいサイトを見つけました。あわせてこちらもどうぞ。
※ twitterの例ではありませんが、概念は同じです。パラメータも一部twitterのものと異なります。
Yahoo!デベロッパーネットワーク – OAuth – フロー

XAuthとは?

OAuthの簡易版といったところでしょうか。
Yahoo!デベロッパーネットワーク – OAuth – フローにある、処理フローの図で言うところの「3.Access Tokenの取得」のみで認証します。
※ 付加するパラメータはOAuthのものとは異なります。

OAuthでは、サービスプロバイダの同意画面を表示させるためにブラウザが立ち上がりますが、ブラウザが起動できない、起動したくない、または、ブラウザを起動するのがふさわしくないような場合、XAuthを使います。

一番の違いは、ID、パスワードの取り扱いです。OAuthの場合は、サービスプロバイダ側に預けるのに対し、XAuthの場合は、それを実装しているクライアント側(コンシューマ)に預けることになります。つまり、クライアントに預けたID、パスワードを悪用される危険性が全くないとは言えないということです。これは、XAuthのデメリットであり、クライアントを使うユーザに対する脅威ですので、開発するにあたっては、このリスクを十分理解しないといけません。

とはいうものの、一般的には、WebアプリではOAuthを、デスクトップアプリではXAuthを使うという感じで、使い分けられているようです。

今回はXAuth方式を採用したいと思います。

実装前の準備

前置きが長くなりましたが、今回はtwitterでXAuth方式を使う際の下準備についてまとめたいと思います。

1.アプリケーション登録申請
Create cool applications! | dev.twitter.comにアクセスし、「Register an app」を選択します。

top

twitterのアカウントでログインします。

login

アプリケーション登録申請画面が開きますので、項目を入力します。

app

「アプリケーションを登録する」ボタンをクリックすると、同意画面が表示されます。

agree

「I Accept」を選択します。

translatair

アプリケーションの登録申請が完了しました!

2.メールで申請
ちょこちょこっとサンプルコードを書いて試していたところ、以下のようなエラーが出て、一向に進みません。

[RPC Fault faultString=”HTTP 要求に関するエラー” faultCode=”Server.Error.Request” faultDetail=”エラー : [IOErrorEvent type=”ioError” bubbles=false cancelable=false eventPhase=2 text=”Error #2032: Stream Error. URL: https://api.twitter.com/oauth/access_token” errorID=2032]. URL: https://api.twitter.com/oauth/access_token”]

Twitter API Wiki / Twitter REST API Method: oauth access_token for xAuthをよく読むと、以下のようにありました。

In order to get access to this method, you must apply by sending an email to api@twitter.com ― all other applications will receive an HTTP 401 error. Web-based applications will not be granted access, except on a temporary basis for when they are converting from basic-authentication support to full OAuth support.

OAuth方式を使用する場合は必要ないようなのですが、XAuth方式を利用する際にはメールでapi@twitter.com宛てに申請して、許可をもらわないといけないようです。ちょっとだけはまりました。要注意です。

以下のような内容でメールしました。

タイトル:access_token for xAuth
本文:Hi. My name is mojyamojya in twitter. Please my application to use the xauth. The application name is TranslatAIR.

以前は、何度もやり取りしないとなかなか許可がもらえず、とても手間がかかったようですが、私の場合、サクッと解決しました。メールしたのは深夜だったのですが、翌朝には「XAuth、もう使えるようになってるよ」的な返事が来ていました。ラッキーです。

以上が、デスクトップアプリケーションがtwitterのAPIコール時にXAuth方式を利用するまでに必要な下準備です。実装編は、次回ご紹介したいと思います。