1

新しいユーザーが自分のGoogleアカウントでサインインできるようにする、Android アプリ用の新しいオプションを開発する予定です。基本的なユーザー情報 (名、姓、生年月日、電子メール、国など) を取得し、サーバーに保存する必要があります。ユーザーがアプリに初めてログインしたときにのみ発生するはずなので、次回ボタンが行うのは、メンバーのエリアにアクセスするための簡単な認証だけです。

現在、アプリは と を使用して許可を求め、oauth2oauth2 apiAccountManagerを介してユーザー情報を取得できます。代わりに、サーバーで同じことをしたいと思います。

ここまでをまとめると、私が考えている流れは次のとおりです。

  1. ユーザーがGoogleでのサインインを選択
  2. 彼がまだアプリを承認していない場合は、彼の情報へのアクセス許可をリクエストしてください。それらを取得してサーバーに保存し、ログインします。すでにアプリを承認している場合は、ログインするだけです。

ただし、彼が自分のプロファイルを表示できるように、彼の Android デバイスにユーザー情報のローカル コピーが必要です。

注:サーバーでデータ インポート プロセスを実行することを考えている理由は、アプリを高速化し、帯域幅を節約するためです。しかし、サーバーに保存される前に、ユーザーが自分のデータを変更したいと思うかもしれません。

私は本当に混乱しており、oauth2 のドキュメントはあまり役に立ちません。

4

2 に答える 2

1

問題がわかりません。ごめん。

OAuth api から顧客に関する情報を取得し、HTTP/HTTPS ポスト リクエストを介してサーバーに情報を送信し、そこに保存するだけです。次に、電話の SQLite データベースに同じ情報を保存し、最初にアプリを起動した後、SQLite のユーザー テーブルで顧客が存在するかどうかを確認します。

ここに素晴らしい例があります: http://www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql-and-sqlite/

于 2012-08-23T19:27:30.807 に答える
0

これを行うには、 Google のクロスプラットフォーム シングル サインオンクロスクライアント認証のドキュメントに従う必要があります。本質的に、フローは次のようになります。

  1. ユーザーが認証されているかどうかを確認します (おそらく、リモート システムへの POST として最適です)。認証されている場合は、メインのアクティビティに進みます。そうでない場合は、サインオン ボタンを表示します。
  2. ユーザーがサインオンをクリックしたら、GoogleApiClient に接続し、現在の個人を取得し、その情報をデバイスに保存します (必要な場合)。
  3. GoogleAuthUtil.getTokenを介してユーザーの認証トークンをリクエストします。
  4. トークンを Web サーバーに送信します (https である必要があります)。Web サーバーで、トークンからユーザーの情報を取得し、データベースに保存します。

また、リクエストには永続的な Cookie ストアを使用することをお勧めします (私は loop4j のAndroid Async-HttpClientを好みます)。これにより、セッションを簡単に保存できるため、頻繁に認証する必要がなくなります。

于 2014-07-06T17:17:00.183 に答える