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

หน้านี้อธิบายวิธีเริ่มต้นใช้งาน Firebase Phone Number Verification ในแอป Android ดูคำอธิบายทั่วไปของฟีเจอร์นี้ได้ที่ภาพรวม

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

เมื่อพอใจกับประสบการณ์ของผู้ใช้ Firebase PNV ในแอปแล้ว คุณสามารถทำตามขั้นตอนเพิ่มเติมเพื่อทำให้แอปพร้อมใช้งานจริงได้

ก่อนเริ่มต้น

1. เพิ่มไลบรารี Firebase PNV ลงในแอป

ในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ <project>/<app-module>/build.gradle.kts หรือ <project>/<app-module>/build.gradle) ให้เพิ่มทรัพยากร Dependency สำหรับไลบรารี Firebase Phone Number Verification สำหรับ Android เราขอแนะนำให้ใช้ Firebase Android BoM เพื่อควบคุมการกำหนดเวอร์ชันของไลบรารี

dependencies {
    // Import the BoM for the Firebase platform
    implementation(platform("com.google.firebase:firebase-bom:35.0.1"))

    // Add the dependencies for the Firebase Phone Number Verification libraries
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-pnv")
}

การใช้ Firebase Android BoM จะทำให้แอปใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้อยู่เสมอ

(ทางเลือก)  เพิ่มทรัพยากร Dependency ของไลบรารี Firebase โดยไม่ใช้ BoM

หากเลือกที่จะไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันของไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดทรัพยากร Dependency

โปรดทราบว่าหากคุณใช้ไลบรารี Firebase หลายรายการในแอป เราขอแนะนำอย่างยิ่งให้ใช้ BoM เพื่อจัดการเวอร์ชันไลบรารี ซึ่งจะช่วยให้มั่นใจได้ว่าทุกเวอร์ชันจะเข้ากันได้

dependencies {
    // Add the dependencies for the Firebase Phone Number Verification libraries
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-pnv:17.0.0")
}

2. เริ่มต้นไลบรารี Firebase PNV ในโหมดทดสอบ

  1. ในคอนโซล Firebase ให้ไปที่แท็บความปลอดภัย > การยืนยันทางโทรศัพท์ > การทดสอบ

  2. คลิกสร้างโทเค็น

  3. ในแอป ให้เริ่มต้นไคลเอ็นต์ Firebase PNV เพื่อใช้เซสชันทดสอบ โดยทำดังนี้

    Kotlin

    นำเข้าไลบรารี:

    import com.google.firebase.pnv.FirebasePhoneNumberVerification
    

    สร้างอินสแตนซ์ใหม่ของคลาส FirebasePhoneNumberVerification และใช้อินสแตนซ์นี้สำหรับการเรียก Firebase PNV ทั้งหมด

    val fpnv = FirebasePhoneNumberVerification.getInstance()
    

    เปิดใช้เซสชันทดสอบโดยใช้โทเค็นที่คุณสร้างในขั้นตอนก่อนหน้า โดยทำดังนี้

    fpnv.enableTestSession("COPIED_TOKEN_STRING")
    

    คุณต้องเรียกใช้เมธอดนี้เพียงครั้งเดียวในอินสแตนซ์ของ FirebasePhoneNumberVerification การเรียกใช้ครั้งต่อๆ ไปจะทำให้เกิดข้อผิดพลาด

โทเค็นทดสอบมี TTL 7 วัน หลังจากระยะเวลานี้ คุณจะต้องสร้างโทเค็นใหม่เพื่อเปิดใช้เซสชันทดสอบ โทเค็นทดสอบใช้งานได้กับอุปกรณ์จริงและโปรแกรมจำลอง จึงเหมาะอย่างยิ่งสำหรับการสร้างต้นแบบ UX ในแอปหรือการทดสอบใน CI/CD

3. แนะนำ: ตรวจสอบการรองรับ Firebase PNV

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

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

Kotlin

// Check all SIMs for support.
fpnv.getVerificationSupportInfo()
.addOnSuccessListener { results ->
  if (results.any { it.isSupported() }) {
    // At least one SIM is supported; okay to call getVerifiedPhoneNumber
    // (see the next step).
  } else {
    // No SIMs are supported, so fall back to SMS verification.
  }
}
.addOnFailureListener { e ->
  // Handle error.
}

4. เริ่มขั้นตอนการยืนยัน

หากต้องการเริ่มขั้นตอน Firebase PNV ให้เรียกใช้เมธอด getVerifiedPhoneNumber() ดังนี้

Kotlin

fpnv.getVerifiedPhoneNumber(this@MainActivity)
.addOnSuccessListener { result ->
  // In test mode, this phone number will have a valid country code,
  // followed by all zeros.
  val phoneNumber = result.getPhoneNumber()
  val token = result.getToken()

  // Verification successful. Send token to your backend. (See Next Steps.)
}
.addOnFailureListener { e ->
  // Handle failures, such as the user declining consent or a network error.
}

เมธอด getVerifiedPhoneNumber() จะดำเนินการตามขั้นตอนการยืนยันหมายเลขโทรศัพท์ทั้งหมด ซึ่งรวมถึงสิ่งต่อไปนี้

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

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

  • หน้านี้จะอธิบายวิธีผสานรวมกับ Firebase PNV โดยใช้ API แบบเรียกใช้ครั้งเดียวแบบรวม การเรียกใช้เมธอดเดียวจะจัดการโฟลว์ผู้ใช้ Firebase PNV ทั้งหมด ตั้งแต่การขอความยินยอมของผู้ใช้ไปจนถึงการเรียกใช้เครือข่ายที่จำเป็นไปยังแบ็กเอนด์ Firebase PNV การใช้วิธีนี้จะช่วยลดขั้นตอนการผสานรวมให้เหลือเพียงการเรียกใช้เมธอดเดียว

    เราขอแนะนำ API นี้สำหรับนักพัฒนาแอปส่วนใหญ่ แต่หากคุณมีข้อกำหนดเฉพาะที่ไลบรารีไม่รองรับ โปรดดูข้อมูลเกี่ยวกับการใช้ขั้นตอนที่กำหนดเองในหน้าปรับแต่งขั้นตอน Firebase Phone Number Verification

  • หากคุณใช้หมายเลขโทรศัพท์ที่ยืนยันแล้วนอกไคลเอ็นต์แอป คุณควรส่งโทเค็นแทนหมายเลขโทรศัพท์เพื่อให้สามารถยืนยันความสมบูรณ์ของโทเค็นเมื่อใช้งานได้ ดูยืนยันโทเค็น Firebase PNV

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