向 Android 应用添加 Firebase 电话号码验证

1. 概览

Firebase 电话号码验证(Firebase PNV 或 FPNV)是一种更快、更安全的电话号码验证方法。基于短信的验证需要最终用户接收并输入短信中的验证码,而 Firebase PNV 只需用户点按一下,即可直接从已连接的运营商处获取设备中 SIM 卡的电话号码。这可减少最终用户遇到的阻碍,通过不依赖短信传递来提高可靠性,并消除使用短信时经常被利用的滥用途径。

Firebase PNV 弹出式对话框

在此 Codelab 中,您将学习如何构建“餐厅查找器”AI 语音智能体,该智能体使用 Firebase 电话号码验证在确认餐桌预订之前验证最终用户的电话号码。

前提条件

  • 最新版本的 Android Studio
  • 搭载 API 级别 26 或更高级别的 Android 设备或模拟器

学习内容

  • 设置使用 Firebase PNV 的 Firebase 项目。
  • 测试模式 下使用 Firebase PNV 进行原型设计,无需结算账号或实体 SIM 卡。
  • 将 Firebase PNV SDK 集成到 Android 应用中。
  • 使用单次调用 API 验证电话号码。
  • (可选)准备将应用用于生产环境。

2. 设置示例项目

创建 Firebase 项目

  1. 使用您的 Google 账号登录 Firebase 控制台
  2. 点击相应按钮以创建新项目,然后输入项目名称(例如 Tera Bites)。
  3. 点击继续
  4. 如果看到相关提示,请查看并接受 Firebase 条款,然后点击 继续
  5. (可选)在 Firebase 控制台中启用 AI 辅助功能(称为“Gemini in Firebase”)。
  6. 对于此 Codelab,您不需要 使用 Google Analytics(分析),因此请关闭 Google Analytics(分析)选项。
  7. 点击创建项目,等待您的项目完成预配,然后点击继续

下载代码

运行以下命令,克隆此 Codelab 的示例代码:

git clone https://github.com/GoogleCloudPlatform/devrel-demos
cd codelabs/firebase-pnv-android

在 Android Studio 中打开 firebase-pnv-android 目录。

将 Android 项目关联到 Firebase

  1. 在 Firebase 控制台的项目概览页面的中心位置,点击 Android 图标或添加应用 以启动应用创建工作流。
  2. Android 软件包名称 字段中,输入应用的软件包名称:com.google.firebase.example.fpnv
  3. 点击注册应用
  4. 按照说明下载 google-services.json 文件,并将其移到您刚刚下载的代码的 app/ 目录中。
  5. 点击下一步

启用 Firebase AI Logic

此 Codelab 使用 Firebase AI Logic 为 AI 语音智能体提供支持。如需在 Firebase 项目中启用 Firebase AI Logic,请执行以下操作:

  1. 在 Firebase 控制台中,依次前往 AI 服务 > AI Logic
  2. 点击开始使用
  3. 点击开始使用此 API ,选择使用 Gemini Developer API。
  4. 点击启用 API 并确认。

3. 在测试模式下设置 Firebase PNV

借助测试模式,您可以使用测试令牌验证“虚假”电话号码以进行开发。

加入 Google 系统服务公开 Beta 版计划

将开发设备注册到 Google 系统服务 Beta 版渠道,以使用测试模式:

  1. 浏览至 Android 应用测试 - Google 系统服务 页面。
  2. 点击成为测试人员

您现在是 Google 系统服务的 Beta 版测试人员。

添加 Firebase PNV 依赖项

在 Android 项目的代码库中,Firebase PNV 和 Firebase AI Logic 库的依赖项已在 /gradle/versions.toml 文件中定义:

[versions]
# ... other dependencies
firebaseBom = "34.13.0"

[libraries]
# ... other libraries
firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebaseBom" }
firebase-ai-logic = { module = "com.google.firebase:firebase-ai" }
firebase-pnv = { module = "com.google.firebase:firebase-pnv" }

在您的模块(应用级)Gradle 文件(通常是 /app/build.gradle.kts)中,声明 Firebase PNV 库的依赖项:

dependencies {
  // ... other dependencies
  implementation(platform(libs.firebase.bom))
  implementation(libs.firebase.ai.logic)

  // Add this line
  implementation(libs.firebase.pnv)

  // ...
}

生成测试令牌

  1. 在 Firebase 控制台中,依次前往安全性 > 电话验证
  2. 选择测试 标签页。
  3. 选择测试电话号码对应的国家/地区代码,然后点击生成令牌
  4. 复制生成的令牌字符串。

在代码中启用测试会话

  1. 返回 Android 项目,打开 ChatViewModel.kt 文件,然后找到 verifyPhoneNumber() 函数。
  2. 初始化 FirebasePhoneNumberVerification 客户端并启用测试会话,粘贴从 Firebase 控制台复制的令牌:
    suspend fun verifyPhoneNumber(): String {
        // Initialize Firebase Phone Number Verification
        val fpnv = FirebasePhoneNumberVerification.getInstance()
    
        // Enable Test session
        fpnv.enableTestSession("PASTE_THE_TOKEN_YOU_COPIED_IN_PREV_STEP")
    
        // Trigger the Firebase PNV pop up
        val response = fpnv.getVerifiedPhoneNumber(context!!).await()
        val phoneNumber = response.getPhoneNumber()
    
        return phoneNumber
    }
    

4. 运行应用

现在您已实现 Firebase PNV,接下来需要运行应用。

  1. 在 Android Studio 中,点击运行 以在 Android 模拟器或实体设备上启动应用。
  2. 应用启动后,您应该会看到如下所示的屏幕:
    Firebase PNV 应用正在运行
  3. 点击发起通话 ,然后自我介绍。
    Firebase PNV 应用正在运行
  4. AI 语音智能体应提示您提供预订详细信息。提供详细信息后,它应提示您查看屏幕以验证电话号码:
    Firebase PNV 应用正在运行
  5. 完成后,您会看到验证完成屏幕:
    Firebase PNV 应用正在运行
  6. 点击结束会话 以终止通话。

5. (可选)升级到生产模式

升级您的 Firebase 定价方案

如需在 生产模式 下使用 Firebase PNV,您的 Firebase 项目必须采用 随用随付 (Blaze) 定价方案,这意味着该项目与一个 Cloud Billing 账号 相关联。

  • Cloud Billing 账号要求提供支付方式,例如信用卡。
  • 在特别促销期间,或者如果您在活动中完成此 Codelab,则可能会有 Google Cloud 抵用金可用(例如,此页面顶部的横幅)。
  • 如果您刚开始接触 Firebase 和 Google Cloud,请确认您是否有资格获得 $300 赠金和免费试用 Cloud Billing 账号

如需将项目升级到 Blaze 方案,请按以下步骤操作:

  1. 在 Firebase 控制台中,选择升级您的方案
  2. 选择 Blaze 方案。按照屏幕上的说明将 Cloud Billing 账号关联到您的项目。
    • 如果您为此 Codelab 申领了 Google Cloud 抵用金,则结算账号的名称很可能是 Google Cloud Platform Trial Billing AccountMy Billing Account
    • 如果您需要创建 Cloud Billing 账号作为此升级的一部分,则可能需要返回 Firebase 控制台中的升级流程以完成升级。

启用 Firebase PNV 生产模式

  1. 添加应用的 SHA-256 指纹:
    1. 在 Firebase 控制台中,依次前往设置 > 常规 页面
    2. 向下滚动到您的应用 卡片,然后找到您的 Android 应用。
    3. SHA 证书指纹 字段中,添加您的 SHA-256 指纹。如需详细了解如何获取应用的 SHA-256 指纹,请参阅对客户端进行身份验证
  2. 返回安全性 > 电话验证
  3. 点击设置生产环境 。您将看到项目中将启用生产环境的应用列表,并有机会添加其他应用。
  4. 提交应用以进行 OAuth 品牌验证 和隐私权政策审核。Google Cloud 将验证您是否清楚准确地标识了应用及其隐私权政策。
    如需开始审核,请点击 Google Cloud 中的“继续”。此过程有时可能需要 24 小时或更长时间。
  5. 在等待品牌验证期间,请查看 Firebase PNV 服务专用条款,这些条款在控制台中提供了链接。
  6. 应用通过品牌验证后,请勾选相应复选框以确认服务专用条款,然后点击启用

Firebase PNV 现在在生产模式下处于活跃状态。

移除测试代码

在 Android 项目中,删除 fpnv.enableTestSession(...) 行。

迁移 Firebase AI Logic 以使用 Vertex AI

如果您在结算账号中使用抵用金,则无法将这些抵用金用于 Gemini Developer API。但您可以将它们用于 Vertex AI Gemini API。

  1. 在 Firebase 控制台中,依次前往 AI 服务 > AI Logic
  2. 点击设置
  3. Vertex AI Gemini API 下,点击 启用
  4. 在 Android 项目中,更改 Firebase AI Logic 初始化以使用 Vertex AI 后端,而不是 Google AI:
    val model = Firebase.ai(
        backend = GenerativeBackend.vertexAI(location = "us-central1")
    ).liveModel(
        modelName = "gemini-live-2.5-flash-native-audio",
        // ... other configuration
    )
    

6. 恭喜!

您已成功将 Firebase 电话号码验证集成到 Android 应用中!

所学内容

  • 为 Firebase PNV 设置项目。
  • 使用测试模式进行原型设计。
  • 实现 Firebase PNV 单次调用 API。
  • 升级到生产模式。

后续步骤