Firebase 电话号码验证
Firebase Phone Number Verification (Firebase PNV) 是一种快速安全的用户电话号码验证方法。基于短信的验证需要用户接收并输入短信中的验证码,而 Firebase PNV 则只需用户点按一下,即可直接从已连接的运营商处获取设备中 SIM 卡的电话号码。这样可以减少用户摩擦,提高可靠性(因为不依赖于短信传送),并消除使用短信时容易被利用的滥用途径。
主要功能
| 运营商是可信来源 | 借助 Firebase PNV,Google 可以直接从运营商处获取 SIM 卡的已验证电话号码,从而告知您当前运行应用的设备上使用的电话号码。短信 OTP 只能告知您用户是否可以访问相应电话号码。 |
| 单独使用或与身份提供方搭配使用 | 您可以单独使用 Firebase PNV 作为一种易于集成且可靠的电话号码验证方法,也可以将其与 Firebase Authentication 或您自己的身份验证系统搭配使用,作为一种登录方法。 |
| 自动使用可用的运输公司 | 您可以使用 Firebase PNV SDK 检测兼容性,并在设备尚不支持 Firebase PNV 时回退到其他方法(例如短信)。 Firebase PNV 将逐步面向全球运营商推出。随着新运营商的加入,您可以自动使用这些运营商,而无需对应用进行任何其他更改。如需查看参与的运营商列表,请参阅运营商支持。 |
| 防范短信钓鱼式攻击 | 由于 Firebase PNV 不会发送任何短信来验证电话号码,因此用户不会预期收到您的应用发送的包含一次性密码的消息,而这些密码可能会被用于账号盗用攻击。 |
工作原理
当您提出电话号码验证请求时,Firebase PNV:
检查用户设备和移动运营商是否受支持。
征得用户同意,允许其与您的应用分享电话号码。
与分配给 SIM 卡的移动运营商配合使用,以获取经过验证的电话号码。
向您的应用返回包含已验证电话号码的签名令牌,通常在用户同意后 1-3 秒内返回。
验证此令牌的签名后,您的应用现在拥有用户的已验证电话号码。您还可以将此令牌用作基于电话号码的登录流程的一部分,例如使用 Firebase Authentication 或您自己的身份验证后端。
实现流程
| 设置您的 Firebase 项目 | 在 Firebase 控制台中,完成初始配置步骤,为您的 Firebase 项目启用结算功能和 Firebase Phone Number Verification API。 | |
| 安装 SDK 并进行初始化 | 为应用的平台安装 Firebase PNV SDK。SDK 要求已成功完成 OAuth 品牌验证。 | |
| 设计说明界面 | (推荐)在触发正式的用户同意界面之前,说明用户需要选择一张 SIM 卡来获取号码,并说明这种方式比短信验证码更快、更安全。这样可以减少用户困惑,并让用户熟悉新的电话号码验证流程。 | |
| 检查设备和运营商的兼容性 | (推荐)当您的应用启动时,使用 Firebase PNV SDK 检查设备及其移动运营商是否与 Firebase PNV 兼容。如果兼容,则显示说明界面,并提示用户同意。如果不是,请使用旧版电话号码验证方法,例如短信。 | |
| 请求经过验证的电话号码 | 使用 Firebase PNV SDK 从移动运营商处请求设备的已验证电话号码。这会触发用户同意机制,而您的铺垫消息屏幕有助于用户做好完成同意流程的准备。 | |
| 验证响应令牌 | 在 Firebase PNV 服务的响应中,您会获得一个已签名的令牌,您可以将其发送到应用的后端。在后端,验证令牌的签名。如果签名有效,则令牌包含设备的已验证电话号码。 |
后续步骤
- Firebase PNV 是一项付费服务,每次验证都会产生费用。请参阅价格页面了解详情。
- 请参阅在 Android 上开始使用指南,了解如何在 Android 应用中使用 Firebase PNV。