最大限度地降低范围更改对用户影响的步骤
- 如果您的应用需要经过身份验证的用户的电子邮件地址,并且您之前已将
profile.emails.read
用于该目的,请改用email
。 - 使用已批准的验证请求为
profile.emails.read
获得批准。请参阅如何提交进行验证? - 在要移除的范围内撤消之前的用户令牌,或彻底移除对应用的访问权限。例如,应撤消具有
profile.emails.read
访问权限的令牌。我们建议您在用户仍在应用期间应用撤消,以便您可以立即征得用户同意。 - 在不使用
profile.emails.read
的情况下,提示用户重新同意新的范围(例如email
)。 - 移除您的 Google API OAuth 同意屏幕配置中将会逐步淘汰的范围。
如需将您的应用从 Google+ 登录功能迁移到 Google 登录功能,您需要更新登录按钮、请求的范围,以及有关如何从 Google 检索个人资料信息的说明。如需查看完整说明,请参阅我们的 Android 版 Google 登录文档。
更新登录按钮时,请勿直接指向 Google+,也不要使用红色。 符合我们更新后的品牌推广指南。
大多数 Google+ 登录应用都会请求组合使用下列范围:plus.login
、plus.me
和 plus.profile.emails.read
。通过将 GoogleSignInOptions.Builder
与 DEFAULT_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.getToken
或 Plus.API
,则应migrate到最新的 Sign-In API,以便提高安全性并改善用户体验。