Android アプリから、GAE 開発サーバーのアカウントを利用する
と、Android 端末のGoogle アカウントを用いて、GAEアプリケーションを利用する準備を徐々に進めてきていたのだが、GAEの開発環境でのやり方が分からなかったため、とりあえず実際にアプリケーションをリリースして試していた。
が、何とかいける方法が見つかったので、メモ。
通常PCから、GAEのアプリケーションをログインしないと使えないようにすると、以下の様なログイン画面にナビゲートされる。
ただ、Android 端末ではGoogle アカウントを管理しているので、アプリケーションがログインを必要とするGAEアプリケーションを利用する場合、以下の様な画面を表示させて、事前に認証を行っておくことが出来る。その手順は、前回実現した。
が、同じ手順で、ホスト名のみ、開発用のGAE の Webサーバーにしてもそのままでは動作しない。
まぁあくまで開発環境なので、認証周りまで完全にエミュレート出来ているわけでは無いのだろう。
開発用のサーバーでは、以下の様なログイン画面が表示され、何でもいいのでメールアドレスを入力してログインすると、目的のアプリケーションに遷移するようになっている。
ということは、まぁ Cookie になにがしかの値を埋め込んでいるのだろうと言うことで、Firebug でのぞいてみると・・・
こんなエントリーが。なんか、後半の数値の部分は動的に生成しているのかな?と思って、検索してみると数件そのままの値がヒット。
dev_appserver_login=test@example.com:False:185804764220139124118
なんか、固定値みたいなので、そのまま Cookie にセットして送信するコードを書いて、、、
String uri = null; String acsid = null; HttpGet httpGet = null; HttpResponse response = null; if (Debug.isDebuggerConnected()) { // デバッグ時のコード uri = "http://192.168.10.119:8080/cardroid"; acsid = "dev_appserver_login=\"test@example.com:False:185804764220139124118\""; } else { // リリース時のコード以下参照 // https://www.typea.info/blog/index.php/2010/08/09/android_google_gae } HttpPost httpPost = new HttpPost(uri); httpPost.setHeader("Cookie", acsid); response = client.execute(httpPost); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); String l = null; while((l = reader.readLine()) != null) { Log.i("MyApp",l); }
実行してみると、めでたく、ログイン状態となったようだ。
これで、開発環境で、GAEアプリをテスト出来そうだ。
以上。