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

1. ภาพรวม

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

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

ใน Codelab นี้ คุณจะได้เรียนรู้วิธีสร้างตัวแทนเสียง AI "Restaurant Finder" ที่ใช้การยืนยันหมายเลขโทรศัพท์ 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. คลิกสร้างโปรเจ็กต์ รอให้ระบบจัดสรรโปรเจ็กต์ แล้วคลิกต่อไป

ดาวน์โหลดโค้ด

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

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

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

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

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

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

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

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

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

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

ในฐานของโค้ดของโปรเจ็กต์ Android ระบบได้กำหนดทรัพยากร Dependency สำหรับไลบรารี 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) ให้ประกาศทรัพยากร Dependency สำหรับไลบรารี 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. เมื่อแอปเปิดขึ้น คุณควรเห็นหน้าจอที่มีลักษณะดังนี้:
    แอป PNV ของ Firebase ที่ทำงานอยู่
  3. คลิกเริ่มโทร แล้วแนะนำตัว
    แอป PNV ของ Firebase ที่ทำงานอยู่
  4. ตัวแทนเสียง AI จะขอรายละเอียดการจองจากคุณ เมื่อคุณให้รายละเอียดแล้ว ตัวแทนจะแจ้งให้คุณดูหน้าจอเพื่อยืนยันหมายเลขโทรศัพท์:
    แอป PNV ของ Firebase ที่ทำงานอยู่
  5. เมื่อดำเนินการเสร็จแล้ว คุณจะเห็นหน้าจอการยืนยันเสร็จสมบูรณ์:
    แอป PNV ของ Firebase ที่ทำงานอยู่
  6. คลิกสิ้นสุดเซสชัน เพื่อวางสาย

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

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

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

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

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

เปิดใช้โหมดเวอร์ชันที่ใช้งานจริงของ Firebase PNV

  1. เพิ่มลายนิ้วมือ SHA-256 ของแอป โดยทำดังนี้
    1. ในคอนโซล Firebase ให้ไปที่หน้าการตั้งค่า > ทั่วไป
    2. เลื่อนลงไปที่การ์ดแอปของคุณ แล้วค้นหาแอป Android
    3. เพิ่มลายนิ้วมือ SHA-256 ลงในช่องลายนิ้วมือของใบรับรอง SHA ดูรายละเอียดเกี่ยวกับวิธีรับลายนิ้วมือ 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 แบบเรียกครั้งเดียว
  • การอัปเกรดเป็นโหมดเวอร์ชันที่ใช้งานจริง

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