我想使用oAuth检索用户的ID,最好只检索他们的ID,而不是他们的电子邮件地址,姓名或任何其他信息。
在Android中,我知道如何使用Google Play API获取令牌,并且可以显示用户授予应用权限以访问所请求数据的对话框。我通常使用AccountManager打开对话框,允许用户选择用于授权应用程序的帐户的电子邮件地址。从这个意义上说,我已经可以访问他们的电子邮件地址,虽然我并不需要它。我真正想要的是与该电子邮件地址关联的Google帐户的ID。我也不想使用Google+,因为这需要访问过多的私人信息。
我发现最接近的范围是:
https://www.googleapis.com/auth/userinfo.email
但是,由于我在从AccountManager中选择电子邮件地址时已经可以访问他们的电子邮件地址,因此要求用户允许其电子邮件地址似乎没有意义。
我是否可以调用范围来检索用户的帐户ID?
修改 显然我不是唯一一个对此感到生气的人: http://www.club4850.com/?p=46970
这就是像WhatsApp这样的公司成功的原因。它们不需要注册或访问有关用户的任何信息。谷歌的登录显示了所请求的权限“知道你在Google上的身份” - 失去大量用户的好方法。
答案 0 :(得分:1)
做更多的研究,有一个解决方案。但是,这确实需要允许用户泄露他们的电子邮件地址。该解决方案称为跨客户端身份:
https://developers.google.com/accounts/docs/CrossClientAuth Verifying Back-End Calls from Android Apps
基本上它的工作原理如下:
我已经测试了这个并且它有效。无需在设备上存储密码,也无需请求用户关闭的任何奇怪权限。但是,用户必须忍受泄露他们的电子邮件地址,但大多数人通常会遇到较少的问题。但是,您可以告诉应用程序中的用户,如果有助于获得更多信任,则不会存储他们的电子邮件地址或其他信息。
这里还有一个在线工具,可以解码您在开发过程中可以使用的JWT令牌,以快速查看令牌包含的数据: