从 Google+ 登录功能迁移

最大限度地降低范围更改对用户影响的步骤

  1. 如果您的应用需要经过身份验证的用户的电子邮件地址,并且您之前已将 profile.emails.read 用于该目的,请改用 email
  2. 使用已批准的验证请求为 profile.emails.read 获得批准。请参阅如何提交进行验证?
  3. 在要移除的范围内撤消之前的用户令牌,或彻底移除对应用的访问权限。例如,应撤消具有 profile.emails.read 访问权限的令牌。我们建议您在用户仍在应用期间应用撤消,以便您可以立即征得用户同意。
  4. 在不使用 profile.emails.read 的情况下,提示用户重新同意新的范围(例如 email)。
  5. 移除您的 Google API OAuth 同意屏幕配置中将会逐步淘汰的范围。

如需将您的应用从 Google+ 登录功能迁移到 Google 登录功能,您需要更新登录按钮、请求的范围,以及有关如何从 Google 检索个人资料信息的说明。如需查看完整说明,请参阅我们的 Android 版 Google 登录文档

更新登录按钮时,请勿直接指向 Google+,也不要使用红色。 符合我们更新后的品牌推广指南

大多数 Google+ 登录应用都会请求组合使用下列范围:plus.loginplus.meplus.profile.emails.read。通过将 GoogleSignInOptions.BuilderDEFAULT_SIGN_IN 选项搭配使用,系统会自动请求 profile 范围,该范围会提供用户的姓名和个人资料照片。如果您还想获取用户的电子邮件地址,则应在构建 Google 登录选项时调用 .requestEmail()

许多 Google+ 登录功能实现者都使用过代码流程。这意味着,Android、iOS 或 JavaScript 应用从 Google 获取 OAuth 授权代码,然后客户端将该代码发送回服务器,并与跨站请求伪造保护一起发送回服务器。然后,服务器会验证代码并获取刷新令牌和访问令牌,以便从 people.get API 拉取用户个人资料信息。

Google 现在建议您请求 ID 令牌,并将该 ID 令牌从客户端发送到服务器。ID 令牌内置了跨站点伪造防护功能,还可以在您的服务器上进行静态验证,从而避免为了从 Google 的服务器获取用户个人资料信息而进行额外的 API 调用。请按照说明验证服务器上的 ID 令牌

如果您仍希望使用代码流程获取个人资料信息,可以这样做。服务器拥有访问令牌后,您需要从登录发现文档中指定的 userinfo 端点获取用户个人资料信息。API 响应的格式与 Google+ 个人资料响应的格式不同,因此您需要将解析更新为新的格式。

如果您使用的是 GoogleAuthUtil.getTokenPlus.API,则应migrate到最新的 Sign-In API,以便提高安全性并改善用户体验。