リモートサーバーと通信する Android アプリを作成しています。アプリのユーザーが自分の電話にある Google 資格情報を使用してサーバーにログインできるようにしたいと考えています。アプリ。たとえば、ユーザー (Android) の電話が "someguy@gmail.com" で構成されている場合、ユーザーがアプリをインストールして実行すると、"someguy@ としてサインインしますか?" というダイアログが表示されます。 gmail.com?」というメッセージが表示され、[OK] ボタンを押すと、Google 自体によって認証されているように、自分のメール アドレスが someguy@gmail.com であることを認識している ID がサーバー上に確立されます。
Google 独自の oauth2 ドキュメントを含む、これを行う方法に関する広く多様な部分的なレシピを見つけましたが、それをすべて実現する方法を理解していません。
AccountManager を使用して、特定の電話にある Google アカウントを特定する Android コードがあります。サインオンに使用する Google アカウントをユーザーに尋ねると、認証トークンが返されます。
その時点を過ぎると、私はほとんど車輪を回転させています。私が見たレシピは、次の形式の http get を実行する必要があるようです:
http://<myWebServer>.com/_ah/login?continue=<someUrlIChoose>&auth=<authToken>
... (a) appengine に固有のように見えるという点で不満があり、選択した任意のバックエンドでこれを自由に実行できるようにしたい。(b) 設定した appengine インスタンスである appengine を試してみるつまり、ログにクエリが表示されるようになりました (someUrlIChoose URL が何かで呼び出されることを望んでいました)... したがって、トークンの有効性を通知される機会はありません。
具体的な質問には次のようなものがあります。
- 認証トークンをどうすればいいですか...それをサーバーに送信し、サーバーがGoogleに連絡して、指定されたアカウントのトークンの有効性を確認しますか? または、このトークンが有効であることをサーバーに通知するために、(プロセスのこの段階で) 既に Google サーバーから発信されているはずのバックチャネル通信がありますか? または、他の何か?
- このプロセスは、(appengine だけでなく) どのバックエンドのコンテキストでも実行可能であると考えるのは正しいでしょうか?
- (oauth1 などではなく) oauth2 を使用する必要がありますか? 私が読んだものはすべて、oauth2に対するGoogleのサポートが「実験的」であることを暗示しているようです...しかし、そのような主張が現在のものか古いものかは確認していません。たとえ最新の製品であっても、Google にはさまざまな製品を永続的な非最終的な形 (たとえば、永遠のベータ版) に保持してきた歴史があるため、これについて何を結論付ければよいかわかりません。
- 他に関係あるもの...