向 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 逻辑
  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.12.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(context!!)
    
        // Enable Test session
        fpnv.enableTestSession("PASTE_THE_TOKEN_YOU_COPIED_IN_PREV_STEP")
    
        // Trigger the Firebase PNV pop up
        val response = fpnv.getVerifiedPhoneNumber().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 账号要求提供付款方式,例如信用卡。
  • 如果您刚开始接触 Firebase 和 Google Cloud,请确认您是否有资格获得 $300 赠金和免费试用 Cloud Billing 账号
  • 如果您是在活动中完成此 Codelab,请询问活动组织者是否有可用的 Cloud 积分。

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

  1. 在 Firebase 控制台中,选择升级您的方案
  2. 选择 Blaze 方案。按照屏幕上的说明将 Cloud Billing 账号与您的项目相关联。
    如果您需要在此升级过程中创建 Cloud Billing 账号,则可能需要返回 Firebase 控制台中的升级流程以完成升级。

启用 Firebase PNV 生产模式

  1. 添加应用的 SHA-256 指纹:
    1. 在 Firebase 控制台中,前往设置 > 常规页面
    2. 向下滚动到“您的应用”卡片,然后找到您的 Android 应用。
    3. SHA 证书指纹字段中,添加您的 SHA-256 指纹。如需详细了解如何获取应用的 SHA-256 指纹,请参阅对客户端进行身份验证
  2. 返回到安全性 > 手机验证
  3. 点击设置正式版。您会看到项目中的应用列表,其中列出了将启用正式版的应用,并且您有机会添加其他应用。
  4. 提交应用以进行 OAuth 品牌验证和隐私权政策审核。Google Cloud 会验证您是否清晰准确地标识了您的应用及其隐私权政策。
    如需开始审核,请点击 Proceed in 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 逻辑
  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。
  • 升级到生产模式。

后续步骤