Google App Engine のスタートガイドで作成しているゲストブックのフォームにポストするサンプルです。
- App Engine for Java の概要 - Google App Engine - Google Code
- プロジェクトの作成 - Google App Engine - Google Code
以前のソースはActivityクラスにコードを記載してましたが、もう少し汎用的なクラスを作成しました。
GoogleServiceAuthenticator
- コンストラクタにはContextを指定してます。
- getGoogleAccounts() で、アカウントリストを取得できます。
- execute()で、認証を実行してます。
- 引数 accountには、リストから選ばられた一意のアカウントを指定します。typeは、Googleのアカウントタイプ(AppEngineの場合は"ah")。postExecuteCallbackには、認証終了後にコールしたいクラスを指定します。
- AccountManagerのgetAuthTokenを呼び出します。
- GetAuthTokenCallbackをcallbackに指定してます。
- GetAuthTokenCallbackのrun()の認証処理の実態のgetAuthToken()を呼び出してます。
- getAuthToken()では、認証処理を失敗時のリトライのためにループさせてます。
- getLoginUrl()を呼び出して、アプリのUrlを作成。
- https://yourappl.appspot.com/_ah/login?continue=http://localhost/&auth=[authToken]
- authTokenは、AccountManagerから取得した文字列を指定してます。
- urlを読んで、レスポンスを取得。
- 取得したレスポンスが500の場合、AccountManagerのキャッシュからauthTokenを削除して、リトライをさせてます。
- 認証に成功したら、Cookieから、ASCID または、SACSIDを取得します。
- httpsで認証した場合は、SACSID、httpの場合は、ASCIDが取得できます。
- その後、postExecuteCallbackを実行させてます。
- postExecuteCallback内で、App Engineにアクセスするときに、Http Headerの CookieにASCID/SACSIDをセットする必要があります。
Activityの実装例
GoogleServiceAuthExampleActivity
フルプロジェクトはgithubに上げました。
http://github.com/granoeste/GoogleServiceAuthExample
0 件のコメント:
コメントを投稿