Android アプリから、GAE 開発サーバーのアカウントを利用する

と、Android 端末のGoogle アカウントを用いて、GAEアプリケーションを利用する準備を徐々に進めてきていたのだが、GAEの開発環境でのやり方が分からなかったため、とりあえず実際にアプリケーションをリリースして試していた。

が、何とかいける方法が見つかったので、メモ。

通常PCから、GAEのアプリケーションをログインしないと使えないようにすると、以下の様なログイン画面にナビゲートされる。

gae_auth04 

ただ、Android 端末ではGoogle アカウントを管理しているので、アプリケーションがログインを必要とするGAEアプリケーションを利用する場合、以下の様な画面を表示させて、事前に認証を行っておくことが出来る。その手順は、前回実現した。

android_gae03

が、同じ手順で、ホスト名のみ、開発用のGAE の Webサーバーにしてもそのままでは動作しない。

まぁあくまで開発環境なので、認証周りまで完全にエミュレート出来ているわけでは無いのだろう。

開発用のサーバーでは、以下の様なログイン画面が表示され、何でもいいのでメールアドレスを入力してログインすると、目的のアプリケーションに遷移するようになっている。

gae_auth02

ということは、まぁ Cookie になにがしかの値を埋め込んでいるのだろうと言うことで、Firebug でのぞいてみると・・・

gae_auth01

こんなエントリーが。なんか、後半の数値の部分は動的に生成しているのかな?と思って、検索してみると数件そのままの値がヒット。

  1. dev_appserver_login=test@example.com:False:185804764220139124118

なんか、固定値みたいなので、そのまま Cookie にセットして送信するコードを書いて、、、

  1. String uri = null;
  2. String acsid = null;
  3. HttpGet httpGet = null;
  4. HttpResponse response = null;
  5. if (Debug.isDebuggerConnected()) {
  6. // デバッグ時のコード
  7. uri = "http://192.168.10.119:8080/cardroid";
  8. acsid = "dev_appserver_login=\"test@example.com:False:185804764220139124118\"";
  9. } else {
  10. // リリース時のコード以下参照
  11. // https://www.typea.info/blog/index.php/2010/08/09/android_google_gae
  12. }
  13. HttpPost httpPost = new HttpPost(uri);
  14. httpPost.setHeader("Cookie", acsid);
  15.  
  16. response = client.execute(httpPost);
  17. BufferedReader reader = new BufferedReader(new InputStreamReader(in));
  18. String l = null;
  19. while((l = reader.readLine()) != null) {
  20. Log.i("MyApp",l);
  21. }

実行してみると、めでたく、ログイン状態となったようだ。

gae_auth03

これで、開発環境で、GAEアプリをテスト出来そうだ。

 

以上。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です