2

https://gist.github.com/ianbarber/5170508によると、PlusClient に接続してから、GoogleAuthUtil でトークンを取得する必要があります。

しかし、私のアプリケーションでは、逆のシナリオがあります: GoogleAuthUtil.getToken(app, email, GOOGLE_AUTH_SCOPE) を介して既にトークンを取得しています。PlusClient を使用しようとすると、次の 2 つのことが起こります。

  1. アカウント選択ダイアログが引き続き表示されるため、 setAccountName には価値のある効果はありません (間違ったアカウントが設定された場合に例外がスローされることを除く)。
  2. ユーザーは2回目にログインする必要があります(アプリケーションを受け入れる)

実際、私が望むのは、ユーザー プロファイルのアイコンや名前などの基本的なユーザー情報を GoogleAuthUtil からメールとトークンを取得することだけです。

PSはい、 http: //developer.android.com/guide/topics/providers/contacts-provider.html#UserProfile がありますが、API 14 でのみ使用できます

アップデート

GoogleAuthUtil と PlusClient がどのように接続され、それらを強制的に連携させる方法はまだわかりません。唯一の有効な解決策 (GMS サンプルにある) は、https://www.googleapis.com/oauth2/v1/userinfo? access_token=token をフェッチすることです

しかし、それは非常に奇妙です.600KBのライブラリクラスとGoogle Play Serviceアプリがデバイスにインストールされているにもかかわらず、手動でユーザープロファイルを取得する必要があります.

4

3 に答える 3

2

「実際には、ユーザー プロファイル アイコンなどの基本的なユーザー情報を取得するだけです」:

ワンタップでAuth.GOOGLE_SIGN_IN_APIを利用できます。

サーバーがあり、ユーザー情報をサーバーに渡したい場合は、必ずID トークン フローを使用してください。

過去に GoogleAuthUtil / Plus.API / PlusClient を使用していた方は、このGoogle サインインのベスト プラクティスのブログ投稿をチェックして、セキュリティと最高の UX を確保してください。

于 2016-05-21T19:51:00.990 に答える
2

PlusClient を使用したくない場合の 1 つのオプションは、から受け取ったトークンを使用して REST API を自分でヒットすることですgetToken()

https://developers.google.com/+/api/latest/people/get

ただし、PlusClient を使用すると、Java POJO と JSON の間で変換が行われ、キャッシュ、オフライン アクセス、OAuth トークンが管理されるため、これがはるかに簡単になります。

有効な Google アカウント名を使用して PlusClient を構築する場合PlusClient.Builder.setAccountName()、アカウント チューザーを表示する PlusClient からインテントを返すべきではありません。

また、呼び出しに同じスコープ ( https://www.googleapis.com/auth/plus.loginを含める必要があります) を要求しているgetToken()場合、および PlusClient を作成するときに、ユーザーが再度同意する必要はありません。

于 2013-08-01T12:46:36.550 に答える