最大限度地减少范围变更对用户的影响的步骤
- 如果您的应用需要经过身份验证的用户的电子邮件地址,而您之前已出于此目的使用
profile.emails.read
,请改用email
。 - 使用已获批准的验证请求为
profile.emails.read
获取批准。请参阅如何提交验证请求? - 撤消对要移除的范围的先前用户令牌,或完全撤消对应用的访问权限。例如,应撤消具有
profile.emails.read
访问权限的令牌。我们建议您在用户位于应用时应用撤消机制,以便立即征得用户同意。 - 提示用户重新同意使用新范围(例如
email
,而不使用profile.emails.read
)。 - 从 Google API OAuth 同意屏幕配置中移除要逐步淘汰的范围。
如需将应用从 Google+ 登录方式迁移到 Google 登录方式,您需要更新登录按钮、请求的范围以及有关如何从 Google 检索个人资料信息的说明。如需查看完整说明,请参阅我们的 Google 登录(适用于 Android)文档。
更新登录按钮时,请勿提及 G+ 或使用红色。符合更新后的品牌推广指南。
大多数 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 令牌内置了跨网站伪造攻击防范措施,并且还可以在您的服务器上进行静态验证,从而避免了额外的 API 调用来从 Google 服务器获取用户个人资料信息。按照说明在服务器上验证 ID 令牌。
如果您仍希望使用代码流程获取个人资料信息,可以继续这样做。服务器获得访问令牌后,您需要从我们的“登录发现文档”中指定的 userinfo
端点获取用户个人资料信息。API 响应的格式与 Google+ 个人资料响应不同,因此您需要将解析更新为新格式。
如果您使用的是 GoogleAuthUtil.getToken
或 Plus.API
,则应迁移到最新的登录 API,以提高安全性并改善用户体验。