本文档介绍了如何使用 Credential Manager 从用户的设备获取经过加密验证的电子邮件地址。此过程无需应用用户使用动态密码 (OTP) 或魔法链接验证其电子邮件地址。
本文档介绍了以下方面:
- Android 兼容性
- 用户体验
- 支持的账号
- 对电子邮件送达率的影响
- 与“使用 Google 账号登录”的比较
本指南假定您熟悉以下概念:
Android 兼容性
搭载 Android 9(API 级别 28)及更高版本的手机、平板电脑和可折叠设备支持此功能。所需的 Google Play 服务 (GMS) 最低版本为 25.49.x。
用户体验
以下部分介绍了验证流程期间的用户体验、包含回退验证方法的必要性,以及针对各种使用场景的推荐用户体验。
验证流程
分享经过验证的电子邮件地址的用户体验如下:
用户将焦点置于输入字段上,或点按调用 Credential Manager API 的按钮。您还可以根据屏幕的设计,在应用屏幕加载时调用该 API。
系统会显示一个底部动作条,其中显示将与应用分享的信息。如果该设备上没有可用信息,用户会看到一条通用错误消息。
用户点按同意并继续 后,系统会显示成功或失败 消息。
包含主要流程和回退流程
为确保用户体验顺畅,请在需要电子邮件验证的屏幕上包含以下选项:
- 主要验证选项:电子邮件字段或按钮,用于触发 Credential Manager API 流程以进行快速验证。
- 备用验证选项:链接或按钮,供用户在失败时(例如设备上没有可用信息,或者检索到的电子邮件地址与预期不符)“以 其他方式验证”或使用“其他选项”手动输入电子邮件地址。这样,用户就可以尝试使用其他凭据或通过提供手动 OTP 进行验证。
使用场景
以下部分介绍了电子邮件验证的推荐使用场景以及建议的用户体验。
注册
用户可以使用经过验证的电子邮件地址立即创建账号,而无需单独的验证步骤。(可选)提示用户添加通行密钥。如果用户选择添加通行密钥,请触发 通行密钥创建 流程。
账号恢复
为避免用户在垃圾邮件文件夹中搜索恢复代码时遇到挫折,请允许他们使用安全存储在设备上的经过验证的电子邮件地址恢复账号。此外,建议他们创建通行密钥以供日后使用。
针对敏感操作的重新身份验证
通过要求执行快速重新身份验证步骤,保护敏感的用户操作,例如更改设置或更新个人资料详细信息。
支持的账号
通过 Credential Manager 进行的电子邮件验证仅支持验证消费者 Google 账号。不支持 Workspace 账号和受监督的 账号。
消费者 Google 账号可以使用任何提供商的电子邮件地址创建,不一定是 @gmail.com。不过,Google 会以不同的方式验证这些账号:
- 对于 @gmail.com 账号:Google 是权威来源,并且电子邮件地址已知已通过验证。
- 对于非 @gmail.com 账号:从长远来看,Google 不是这些电子邮件地址的权威来源。虽然 Google 会在创建账号时验证电子邮件地址,但该电子邮件地址的所有权可能会随着时间的推移而发生变化。因此,对于非 @gmail.com 地址,您应考虑添加额外的验证步骤,例如发送 OTP,以确保用户仍有权访问该电子邮件账号。
如需详细了解验证的含义,请参阅数字 凭据。
有效性和新鲜度
系统会根据设备上活跃的 Google 账号中的用户当前 电子邮件地址,颁发可验证凭据 (VC)。这些凭据会提前颁发给设备,通常是在设备处于闲置状态时颁发。虽然这些凭据可能在多天内保持有效,但系统会在分享凭据时执行检查,以确保账号仍然存在、位于设备上,并且电子邮件地址有效,从而有效地将账号的即时状态置于凭据的有效期之上。
为确保真实性,系统会在分享时生成密钥绑定 (kb) 签名,其中包含 nonce。
如果设备处于离线状态或账号被移除,该流程会失败,而不会提供过期的 VC 或非活跃 Google 账号的 VC。
电子邮件送达率
虽然该流程会确认账号的合法性,但不能保证电子邮件会送达收件箱(例如,电子邮件可能会被转到垃圾邮件文件夹)。OTP 仍然是确认电子邮件送达率的最终方法。
与“使用 Google 账号登录”的比较
虽然数字凭据和 “使用 Google 账号登录” 解决方案都提供 经过验证的电子邮件地址,但用户流程和使用场景有所不同:
- 使用场景:Credential Manager 电子邮件验证流程并非 仅用于注册或登录使用场景,而是可用于 涉及检索经过验证的电子邮件地址的任何使用场景。这可能还包括账号恢复。
- 注册:与“使用 Google 账号登录”不同,Credential Manager 流程不需要 Google 注册。
- 平台支持:Credential Manager 流程是仅限 Android 的 解决方案。
- 范围:与“使用 Google 账号登录”不同,后者可以使用 OAuth 2.0 请求 访问用户数据(例如通过范围访问日历或云端硬盘),而 Digital Credentials API 严格用于检索经过验证的身份属性。它 不能用于请求额外的授权范围。
后续步骤
如需在应用中实现此功能,请参阅实现指南。