前準備として、Google APIを使用するアプリケーションの登録と、認証時のリダイレクト先を用意しておく必要があります。
1. Google APIを使用するアプリの登録
ここの手順(リンク)に従って、Google APIを使用するアプリを登録します。
2. リダイレクト先の用意
OAuth2.0認証を行う際に必要となる、リダイレクト先を用意します。実際にアクセスできるURIならどこでも構わないと思います。
3. OAuth2.0認証を行うAIRアプリの作成
では、OAuth2.0認証を行うStageWebViewを用いたAIRアプリを作成します。
まず、OAuth2.0認証で使用する定数の定義。
private const OAUTH_URL:String = "https://accounts.google.com/o/oauth2/auth?response_type=token"; private const CLIENT_ID:String = "xxxx.apps.googleusercontent.com"; private const REDIRECT_URI:String = "http://your.redirect.uri"; private const SCOPE:String = "https://www.google.com/m8/feeds/";
| OAUTH_URL | OAuth2.0認証を行うURL |
| CLIENT_ID | 1.で設定したGoogle APIを使用するアプリのID |
| REDIRECT_URI | 1.で設定したリダイレクト先のURI |
| SCOPE | OAuth2.0認証を使ってアクセスするGoogleのサービス |
次にStageWebViewを作成してOAuth2.0認証を行なうコードです。
var web:StageWebView = new StageWebView(); web.stage = this.stage; web.viewPort = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight); web.loadURL(OAUTH_URL + "&scope=" + SCOPE + "&redirect_uri=" + REDIRECT_URI + "&client_id=" + CLIENT_ID); web.addEventListener(LocationChangeEvent.LOCATION_CHANGE, web_LocationChangeHandler);StageWebViewはDisplayObjectよりも前面のレイヤーに表示されますが、今回はアプリケーションの全面に表示されるように設定しています。
web.loadURL()で、OAuth2.0認証を行うURLを指定しています。
最後にweb.addEventListener()でLocationChange.LOCATION_CHANGEイベントのイベントハンドラーを設定していまので、GoogleのOAuth2.0認証を行った後に、指定のリダイレクト先に飛ぶと、このイベントハンドラーが呼ばれることになります。
では、イベントハンドラーのコードを見てみましょう。
private function web_LocationChangeHandler(e:LocationChangeEvent):void {
var url:Array = web.location.split("#");
// もしリダイレクト先が自分の指定したURLだったら
// OAUTHトークンをデコードする
if (url[0] == REDIRECT_URI) {
var params:Array = String(url[1]).split("&");
for each (var param:String in params) {
var vars:Array = param.split("=");
switch(vars[0]) {
case "access_token":
OAUTH_TOKEN = vars[1];
break;
default:
// do nothing
break;
}
}
web.removeEventListener(LocationChangeEvent.LOCATION_CHANGE,
web_LocationChangeHandler);
web.stage = null;
web.dispose();
}
}
web.locationで飛んだ先のURLを取得します。ちゃんとOAuth2.0認証に成功して飛んで来た場合には、http://your.redirect.uri#access_token=$$$$&expires_in=$$$$
という文字列が取得できるはずですので、飛び先のURLが自分が指定したURLの場合は、以降のパラメータをデコードして、OAuthのトークンを取得します。
最後に、OAuthトークンを取得する為に使用したStageWebViewは不要となりましたので、 後始末を行います。
以降、Google APIでユーザー認証が必要となるデータにアクセスする際には、ここで指定したOAuthトークンを使用します。
0 件のコメント:
コメントを投稿