通过ID令牌从服务器检索Google userdata

时间:2013-04-23 14:37:31

标签: android oauth google-api google-api-client

我已经在墙上撞了大约两天了,是时候寻求帮助了。

我一直试图理解以下内容:

移动应用用户使用以下方法之一登录应用:

  • 谷歌
  • 等...

我首先关注Google,登录有效(用户同意许可)。然后该应用程序检索一个令牌:GoogleAuthUtil.getToken(mActivity, mEmail, mScope); 范围将为audience:server:client_id:XXXXXX形式 XXXXXXX是我的网络服务的client_id。

(移动应用也在Google控制台上注册,与网络服务器位于同一个项目中)

接下来,应用程序将检索到的令牌发送到我的网络服务器,服务器可以使用$client->verifyIdToken( $id_token );获取有效负载。我的服务器正在使用Google API Client

但我现在希望使用此功能让服务器从谷歌检索用户数据,而无需请求用户获得进一步的权限(因为他们已经为应用程序授予了权限)。那么我如何从有效载荷到谷歌请求用户数据?

我仍然觉得我可能完全误解了整个Oauth2.0 / SSO过程,所以任何指针都非常感激!

1 个答案:

答案 0 :(得分:0)

使用audience:server:client_id:XXXXXX范围获得的唯一用户数据是用户的电子邮件地址,即您在网络服务器上收到的JSON编码email中的$id_token字段{{{ 3}}有Java / Ruby等价物,我假设PHP有一个类似的辅助函数。)

如果您需要在其电子邮件地址之外添加其他用户数据,则需要重新设置其他范围,例如this blog post或旧版Google+ API Scopes之一。