เพิ่มการยืนยันหมายเลขโทรศัพท์ด้วย Firebase ลงในแอป Android

1. ภาพรวม

การยืนยันหมายเลขโทรศัพท์ของ Firebase (Firebase PNV หรือ FPNV) เป็นวิธีที่รวดเร็วและปลอดภัยกว่าในการยืนยันหมายเลขโทรศัพท์ Firebase PNV ทำงานโดยรับหมายเลขโทรศัพท์ที่กำหนดให้กับซิมในอุปกรณ์โดยตรงจากผู้ให้บริการที่เชื่อมต่อด้วยการแตะเพียงครั้งเดียว ซึ่งแตกต่างจากการยืนยันผ่าน SMS ที่กำหนดให้ผู้ใช้ปลายทางต้องรับและป้อนรหัสจาก SMS ซึ่งจะช่วยลดความยุ่งยากสำหรับผู้ใช้ปลายทาง ปรับปรุงความน่าเชื่อถือโดยไม่ต้องอาศัยการนำส่งข้อความ SMS และขจัดเวกเตอร์การละเมิดที่มักถูกใช้ประโยชน์เมื่อใช้ SMS

กล่องโต้ตอบป๊อปอัป PNV ของ Firebase

ใน Codelab นี้ คุณจะได้เรียนรู้วิธีสร้างเอเจนต์เสียง AI "เครื่องมือค้นหาร้านอาหาร" ที่ใช้การยืนยันหมายเลขโทรศัพท์ของ Firebase เพื่อยืนยันหมายเลขโทรศัพท์ของผู้ใช้ปลายทางก่อนที่จะยืนยันการจองโต๊ะ

ข้อกำหนดเบื้องต้น

  • Android Studio เวอร์ชันล่าสุด
  • อุปกรณ์ Android หรือโปรแกรมจำลองที่มีระดับ API 26 ขึ้นไป

สิ่งที่คุณจะได้เรียนรู้

  • ตั้งค่าโปรเจ็กต์ Firebase ด้วย Firebase PNV
  • ใช้ Firebase PNV ในโหมดทดสอบเพื่อสร้างต้นแบบโดยไม่ต้องมีบัญชีสำหรับการเรียกเก็บเงินหรือซิมจริง
  • ผสานรวม Firebase PNV SDK เข้ากับแอป Android
  • ยืนยันหมายเลขโทรศัพท์โดยใช้ API แบบการเรียกครั้งเดียว
  • (ไม่บังคับ) เตรียมแอปสำหรับเวอร์ชันที่ใช้งานจริง

2. ตั้งค่าโปรเจ็กต์ตัวอย่าง

สร้างโปรเจ็กต์ Firebase

  1. ลงชื่อเข้าใช้คอนโซล Firebase โดยใช้บัญชี Google
  2. คลิกปุ่มเพื่อสร้างโปรเจ็กต์ใหม่ แล้วป้อนชื่อโปรเจ็กต์ (เช่น Tera Bites)
  3. คลิกต่อไป
  4. หากได้รับแจ้ง ให้อ่านและยอมรับข้อกำหนดของ Firebase แล้วคลิกต่อไป
  5. (ไม่บังคับ) เปิดใช้ความช่วยเหลือจาก AI ในคอนโซล Firebase (เรียกว่า "Gemini ใน Firebase")
  6. สำหรับ Codelab นี้ คุณไม่จำเป็นต้องใช้ Google Analytics ดังนั้นให้ปิดตัวเลือก Google Analytics
  7. คลิกสร้างโปรเจ็กต์ รอให้ระบบจัดสรรโปรเจ็กต์ แล้วคลิกดำเนินการต่อ

ดาวน์โหลดรหัส

เรียกใช้คำสั่งต่อไปนี้เพื่อโคลนโค้ดตัวอย่างสำหรับโค้ดแล็บนี้

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

เปิดไดเรกทอรี firebase-pnv-android ใน Android Studio

เชื่อมต่อโปรเจ็กต์ 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 Voice Agent วิธีเปิดใช้ Firebase AI Logic ในโปรเจ็กต์ Firebase

  1. ในคอนโซล Firebase ให้ไปที่บริการ AI > ตรรกะ AI
  2. คลิกเริ่มต้นใช้งาน
  3. เลือกใช้ Gemini Developer API โดยคลิกเริ่มต้นใช้งาน API นี้
  4. คลิกเปิดใช้ API แล้วยืนยัน

3. ตั้งค่า PNV ของ Firebase ในโหมดทดสอบ

โหมดทดสอบช่วยให้คุณยืนยันหมายเลขโทรศัพท์ "ปลอม" โดยใช้โทเค็นทดสอบสำหรับการพัฒนาได้

เข้าร่วมโปรแกรมเบต้าสำหรับผู้ใช้ทั่วไปของบริการระบบของ Google

ลงทะเบียนอุปกรณ์ที่ใช้พัฒนาในช่องเบต้าของบริการระบบของ Google เพื่อใช้โหมดทดสอบ โดยทำดังนี้

  1. ไปที่หน้าการทดสอบแอป Android - บริการของระบบ Google
  2. คลิกร่วมเป็นผู้ทดสอบ

ตอนนี้คุณเป็นผู้ทดสอบเวอร์ชันเบต้าสำหรับบริการระบบของ Google แล้ว

เพิ่มทรัพยากร Dependency ของ PNV ของ Firebase

ในโค้ดเบสของโปรเจ็กต์ Android ระบบจะกำหนดการขึ้นต่อกันสำหรับไลบรารี PNV ของ Firebase และ 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) ให้ประกาศทรัพยากร Dependency สำหรับคลัง PNV ของ Firebase ดังนี้

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. เรียกใช้แอป

เมื่อใช้งาน PNV ของ Firebase แล้ว ก็ถึงเวลาเรียกใช้แอป

  1. ใน Android Studio ให้คลิกเรียกใช้เพื่อเปิดแอปในโปรแกรมจำลอง Android หรือในอุปกรณ์จริง
  2. เมื่อแอปเปิดขึ้น คุณควรเห็นหน้าจอที่มีลักษณะดังนี้
    แอป PNV ของ Firebase ที่ทำงานอยู่
  3. คลิกเริ่มโทร แล้วแนะนำตัว
    แอป PNV ของ Firebase ที่ทำงานอยู่
  4. ตัวแทนเสียง AI ควรแจ้งให้คุณระบุรายละเอียดการจอง เมื่อระบุรายละเอียดแล้ว ระบบจะแจ้งให้คุณดูหน้าจอเพื่อยืนยันหมายเลขโทรศัพท์
    แอป PNV ของ Firebase ที่ทำงานอยู่
  5. เมื่อดำเนินการเสร็จแล้ว คุณจะเห็นหน้าจอการยืนยันเสร็จสมบูรณ์
    แอป PNV ของ Firebase ที่ทำงานอยู่
  6. คลิกสิ้นสุดเซสชันเพื่อวางสาย

5. (ไม่บังคับ) อัปเกรดเป็นโหมดเวอร์ชันที่ใช้งานจริง

อัปเกรดแพ็กเกจราคาของ Firebase

หากต้องการใช้ PNV ของ Firebase ในโหมดโปรดักชัน โปรเจ็กต์ Firebase ของคุณต้องอยู่ในแพ็กเกจราคาแบบจ่ายเมื่อใช้ (Blaze) ซึ่งหมายความว่าโปรเจ็กต์ต้องลิงก์กับบัญชีสำหรับการเรียกเก็บเงินใน Cloud

หากต้องการอัปเกรดโปรเจ็กต์เป็นแพ็กเกจ Blaze ให้ทำตามขั้นตอนต่อไปนี้

  1. ในคอนโซล Firebase ให้เลือกอัปเกรดแพ็กเกจ
  2. เลือกแพ็กเกจ Blaze ทำตามวิธีการบนหน้าจอเพื่อลิงก์บัญชีสำหรับการเรียกเก็บเงินใน Cloud กับโปรเจ็กต์
    หากคุณต้องสร้างบัญชีสำหรับการเรียกเก็บเงินใน Cloud เป็นส่วนหนึ่งของการอัปเกรดนี้ คุณอาจต้องกลับไปที่ขั้นตอนการอัปเกรดในคอนโซล Firebase เพื่อทำการอัปเกรดให้เสร็จสมบูรณ์

เปิดใช้โหมดการผลิต PNV ของ Firebase

  1. เพิ่มลายนิ้วมือ SHA-256 ของแอป
    1. ในคอนโซล Firebase ให้ไปที่หน้าการตั้งค่า > ทั่วไป
    2. เลื่อนลงไปที่การ์ดแอปของคุณ แล้วหาแอป Android
    3. ในช่องลายนิ้วมือของใบรับรอง SHA ให้เพิ่มลายนิ้วมือ SHA-256 ดูรายละเอียดวิธีรับลายนิ้วมือ SHA-256 ของแอปได้ที่การตรวจสอบสิทธิ์ไคลเอ็นต์
  2. กลับไปที่ความปลอดภัย > การยืนยันทางโทรศัพท์
  3. คลิกตั้งค่าเวอร์ชันที่ใช้งานจริง คุณจะเห็นรายการแอปในโปรเจ็กต์ที่จะเปิดใช้สำหรับเวอร์ชันที่ใช้งานจริง และมีโอกาสเพิ่มแอปอื่นๆ
  4. ส่งแอปเพื่อขอการยืนยันแบรนด์ OAuth และการตรวจสอบนโยบายความเป็นส่วนตัว Google Cloud จะยืนยันว่าคุณระบุแอปและนโยบายความเป็นส่วนตัวของแอปอย่างชัดเจนและถูกต้อง
    หากต้องการเริ่มการตรวจสอบ ให้คลิกดำเนินการต่อใน Google Cloud กระบวนการนี้บางครั้งอาจใช้เวลา 24 ชั่วโมงหรือนานกว่านั้น
  5. ในระหว่างที่รอการยืนยันแบรนด์ โปรดอ่านข้อกำหนดเฉพาะบริการ PNV ของ Firebase ซึ่งลิงก์อยู่ในคอนโซล
  6. หลังจากที่แอปผ่านการยืนยันแบรนด์แล้ว ให้เลือกช่องเพื่อรับทราบข้อกำหนดเฉพาะของบริการ แล้วคลิกเปิดใช้

ขณะนี้ PNV ของ Firebase พร้อมใช้งานในโหมดการผลิตแล้ว

นำรหัสทดสอบออก

ในโปรเจ็กต์ 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 Single-Call API
  • การอัปเกรดเป็นโหมดที่ใช้งานจริง

ขั้นตอนถัดไป