今日のメモ

昨晩は

        HttpGet httpget = new HttpGet("http://test-yamanetoshi.appspot.com/_ah/login?auth=" + authKey);

で作った HttpGet オブジェクトを execute に渡したけれど entity がぬるぽという事でした。無理矢理 authKey をコピペしてブラウザで通信してみましたが何も出ず。
むむ、と言いつつ http://test-yamanetoshi.appspot.com/ にアクセスしてみたら

{"result","Login Success"}

な出力。ひええ、と言いつつ Android 側に盛り込んでみたら動いた。

        HttpGet httpget = new HttpGet("http://test-yamanetoshi.appspot.com/_ah/login?auth=" + authKey);
        try {
        	response = httpClient.execute(httpget);
                httpget = new HttpGet("http://test-yamanetoshi.appspot.com/");
        	response = httpClient.execute(httpget);
        	InputStream is = response.getEntity().getContent();

これはちょっとあり得ないカンジ。もう少し良い方法は無いものか、と言いつつもう少し調べます。資料は以下との事。

あら?

上記資料だと POST 使っとるな。そもそもレスポンスがどうなってるか、をもう少しきちんと精査する必要ありそげ。

確認

ええと、authKey なアクセス部分をコメントアウトして試してみましたところ、

{"result", "Login Unsuccessful"}

との事。元に戻したら Success だった
# よく考えたら英語が変ですがスルー
しかしこの件、コードがキタナいのもですが、挙動として微妙杉。認証が必要な URL にアクセスする場合は authKey で一回アクセスしないとダメって事なのかなぁ。あるいは / へのアクセスだから微妙だったりするの?

てコトで

GAE 側を以下なカンジにして deploy してみました。

  application = webapp.WSGIApplication([('/test/', MainHandler)],
                                       debug=True)

で、ドキュメントにある通りってコトで以下にしてみたら

        HttpGet httpget = new HttpGet("http://test-yamanetoshi.appspot.com/_ah/login?auth=" + authKey + "/test");

ステイタス 500 が戻ってきました。とほほ杉。末端 / が必要なの? って言いつつブラウザで試してみたんですが NG でした。

間違えてました

こうしないとダメなのか。

        HttpGet httpget = new HttpGet("http://test-yamanetoshi.appspot.com/_ah/login?auth=" + authKey + "&continue=" + "/test");

この方式でブラウザでは大丈夫でした。しかしこの方法はこの文書には書いてなかったけどなぁ。
Android 実装でも正常動作を確認してます。これで認証云々はハードル超えたかと。

この後は

  • キタナいコードを整理
  • ログイン情報を preference にナニ
  • preference 関連な処理
  • 戻ってくる json を textField に出力

あたりをごにょごにょしてみる方向で。あら? ってコトは GAE 側をこうして

  application = webapp.WSGIApplication([('/', MainHandler)],
                                       debug=True)

Android 側をこうすれば OK かなぁ。

        HttpGet httpget = new HttpGet("http://test-yamanetoshi.appspot.com/_ah/login?auth=" + authKey + "&continue=" + "/");

動きました。やれやれ。