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

  1. 检查用户设备和移动运营商是否受支持。

  2. 征得用户同意,允许其与您的应用分享电话号码。

  3. 与分配给 SIM 卡的移动运营商配合使用,以获取经过验证的电话号码。

  4. 向您的应用返回包含已验证电话号码的签名令牌,通常在用户同意后 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