4

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

我一直在努力解决以下问题:

移动应用程序用户使用以下方式之一登录应用程序:

  • 谷歌
  • Facebook
  • ETC...

我将首先关注谷歌,登录有效(用户同意许可)。然后该应用程序检索一个令牌:GoogleAuthUtil.getToken(mActivity, mEmail, mScope); 范围的形式是audience:server:client_id:XXXXXX And XXXXXXXis the client_id of my webservice。

(移动应用程序也在 Google Console 上注册,并且与网络服务器在同一个项目中)

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

但我现在希望使用它让服务器从谷歌检索用户数据,而不向用户请求进一步的权限(因为他们已经给了应用程序权限)。那么我如何从有效载荷中获取从谷歌请求用户数据呢?

我仍然认为我可能完全误解了整个 Oauth2.0 / SSO 过程,因此非常感谢任何指针!

4

1 回答 1

0

您在范围内获得的唯一audience:server:client_id:XXXXXX用户数据是用户的电子邮件地址,这是您在网络服务器上收到email的 JSON 编码字段(此博客文章具有 Java/Ruby 等效项,我假设 PHP 有类似的帮助函数) .$id_token

如果您需要他们的电子邮件地址之外的其他用户数据,则需要重新请求其他范围,例如Google+ API 范围或旧版Google Profile API 范围之一。

于 2013-04-23T14:46:10.547 回答