Halaman ini menjelaskan cara menggunakan Firebase Phone Number Verification di aplikasi Android. Lihat ringkasan untuk mengetahui deskripsi umum tentang fitur ini.
Halaman ini menjelaskan cara melakukan integrasi dengan Firebase PNV menggunakan API panggilan tunggal terpadu. Pemanggilan satu metode akan menangani seluruh alur penggunaan Firebase PNV, mulai dari mendapatkan izin pengguna hingga melakukan panggilan jaringan yang diperlukan ke backend Firebase PNV. Dengan menggunakan metode ini, langkah integrasi hanya perlu satu panggilan metode.
API ini direkomendasikan untuk sebagian besar developer. Namun, jika Anda memiliki persyaratan khusus yang tidak dipenuhi oleh library, lihat halaman Menyesuaikan alur Firebase Phone Number Verification untuk mengetahui informasi tentang penerapan alur kustom.
Sebelum memulai
Anda harus memiliki hak Project Owner untuk menyelesaikan langkah-langkah orientasi, termasuk verifikasi brand OAuth.
Anda harus memiliki kebijakan privasi yang dapat diakses secara publik untuk menyelesaikan verifikasi brand OAuth. Anda dapat menggunakan Firebase Hosting untuk membuat aplikasi web dasar guna menghosting kebijakan privasi pengujian Anda.
Pastikan Anda memiliki SIM dari salah satu operator yang didukung untuk diuji.
1. Menyiapkan project Firebase Anda
Tambahkan Firebase ke project Android jika Anda belum melakukannya.
Jika belum, tentukan sidik jari SHA-256 aplikasi di Firebase console dari Project settings. Baca artikel Mengautentikasi Klien untuk mengetahui detail tentang cara mendapatkan sidik jari SHA-256 aplikasi.
Anda harus menyelesaikan proses orientasi pertama kali di Firebase console. Hal ini mencakup verifikasi brand OAuth, dan peninjauan kebijakan privasi. Jika sedang menyiapkan aplikasi pengujian non-produksi, Anda dapat menggunakan Firebase Hosting untuk membuat aplikasi web dasar guna menghosting kebijakan privasi pengujian.
Firebase PNV memerlukan paket Blaze. Jika Anda belum mengupgrade project ke paket harga Blaze bayar sesuai penggunaan, Anda akan diminta untuk melakukannya selama proses orientasi.
Meskipun Firebase PNV mengharuskan akun penagihan disertakan ke project Firebase, Anda tidak akan dikenai biaya untuk layanan ini selama fase pratinjau.
Di halaman Credentials Firebase console, buka kunci API Android Anda dan tambahkan Firebase Phone Number Verification API ke daftar API yang dipilih.
2. Tambahkan library Firebase PNV ke aplikasi Anda
Dalam file Gradle modul (tingkat aplikasi) (biasanya
<project>/<app-module>/build.gradle.kts atau
<project>/<app-module>/build.gradle), tambahkan dependensi untuk
library Firebase Phone Number Verification untuk Android.
dependencies {
// Add the dependency for the Firebase Phone Number Verification library
implementation("com.google.firebase:firebase-pnv:16.0.0")
}
3. Direkomendasikan: Periksa dukungan Firebase PNV
Untuk membantu Anda menentukan kapan harus menampilkan UI entri nomor atau UI penjelasan, sebaiknya periksa apakah perangkat dan kartu SIM-nya mendukung Firebase PNV pada saat aplikasi dijalankan. Langkah ini adalah pemeriksaan awal yang tidak memerlukan izin pengguna. Anda dapat menggunakan hasil pengujian ini untuk memutuskan apakah akan memulai alur Firebase PNV atau menggunakan metode alternatif verifikasi nomor telepon, seperti SMS.
Untuk memeriksa kompatibilitas perangkat, panggil metode
getVerificationSupportInfo():
Kotlin
import com.google.firebase.pnv.FirebasePhoneNumberVerification
// Get an instance of the SDK.
val fpnv = FirebasePhoneNumberVerification.getInstance()
// Check all SIMs for support.
fpnv.getVerificationSupportInfo()
.addOnSuccessListener { results ->
if (results.any { it.isSupported() }) {
// At least one SIM is supported; proceed with FPNV flow
} else {
// No SIMs are supported, so fall back to SMS verification.
}
}
.addOnFailureListener { e ->
// Handle error.
}
getVerificationSupportInfo() menampilkan daftar objek VerificationSupportResult,
satu untuk setiap slot SIM. Jika setidaknya satu kartu SIM didukung, Anda dapat
melanjutkan alur Firebase PNV.
4. Mulai alur verifikasi
Untuk memulai alur Firebase PNV, buat instance
FirebasePhoneNumberVerification baru, dengan meneruskan konteks Activity. Konteks
Activity diperlukan agar SDK dapat menampilkan layar izin kepada
pengguna. Setelah itu, panggil metode getVerifiedPhoneNumber() objek:
Kotlin
import com.google.firebase.pnv.FirebasePhoneNumberVerification
// Get an instance of the SDK _with an Activity context_:
val fpnv = FirebasePhoneNumberVerification.getInstance(this@MainActivity)
// Call getVerifiedPhoneNumber
fpnv.getVerifiedPhoneNumber()
.addOnSuccessListener { result ->
val phoneNumber = result.getPhoneNumber()
val token = result.getToken()
// Verification successful. Send token to your backend.
}
.addOnFailureListener { e ->
// Handle failures, such as the user declining consent or a network error.
}
Metode getVerifiedPhoneNumber() menjalankan seluruh alur verifikasi
nomor telepon, termasuk:
- Menggunakan Credential Manager Android untuk mendapatkan izin pengguna guna membagikan nomor telepon mereka.
- Membuat permintaan ke backend Firebase PNV.
- Menampilkan nomor telepon terverifikasi untuk perangkat (saat penagihan terjadi).
5. Menggunakan token Firebase PNV
Jika alur berhasil, metode getVerifiedPhoneNumber() akan menampilkan nomor telepon
terverifikasi dan token bertanda tangan yang berisi nomor telepon tersebut. Anda dapat menggunakan data ini di aplikasi Anda
seperti yang didokumentasikan oleh kebijakan privasi Anda.
Jika menggunakan nomor telepon terverifikasi di luar klien aplikasi, Anda harus meneruskan token, bukan nomor telepon itu sendiri, sehingga Anda dapat memverifikasi integritasnya saat Anda menggunakannya. Untuk memverifikasi token, Anda dapat menggunakan library verifikasi JWT apa pun. Gunakan library untuk memverifikasi semua hal berikut:
Header
typdisetel keJWT.Token ditandatangani menggunakan salah satu kunci yang dipublikasikan di endpoint JWKS Firebase PNV dengan algoritma
ES256:https://fpnv.googleapis.com/v1beta/jwksKlaim penerbit berisi nomor project Firebase Anda dan menggunakan format berikut:
https://fpnv.googleapis.com/projects/FIREBASE_PROJECT_NUMBERAnda dapat menemukan nomor project Firebase di halaman Project settings di Firebase console.
Klaim audiens adalah daftar yang berisi nomor project dan project ID Firebase Anda serta menggunakan format berikut:
[ https://fpnv.googleapis.com/projects/FIREBASE_PROJECT_NUMBER, https://fpnv.googleapis.com/projects/FIREBASE_PROJECT_ID, ]Masa berlaku token belum berakhir.
Contoh
Sebagai contoh singkat, aplikasi Express.js berikut menerima token Firebase PNV dari
permintaan POST HTTP dan menggunakan library verifikasi JWT untuk memeriksa
tanda tangan dan klaim token:
Node.js
import express from "express";
import { JwtVerifier } from "aws-jwt-verify";
// Find your Firebase project number in the Firebase console.
const FIREBASE_PROJECT_NUMBER = "123456789";
// The issuer and audience claims of the FPNV token are specific to your
// project.
const issuer = `https://fpnv.googleapis.com/projects/${FIREBASE_PROJECT_NUMBER}`;
const audience = `https://fpnv.googleapis.com/projects/${FIREBASE_PROJECT_NUMBER}`;
// The JWKS URL contains the current public signing keys for FPNV tokens.
const jwksUri = "https://fpnv.googleapis.com/v1beta/jwks";
// Configure a JWT verifier to check the following:
// - The token is signed by Google
// - The issuer and audience claims match your project
// - The token has not yet expired (default behavior)
const fpnvVerifier = JwtVerifier.create({ issuer, audience, jwksUri });
const app = express();
app.post('/verifiedPhoneNumber', async (req, res) => {
if (!req.body) return res.sendStatus(400);
// Get the token from the body of the request.
const fpnvToken = req.body;
try {
// Attempt to verify the token using the verifier configured
previously.
const verifiedPayload = await fpnvVerifier.verify(fpnvToken);
// If verification succeeds, the subject claim of the token contains the
// verified phone number. You can use this value however it's needed by
// your app.
const verifiedPhoneNumber = verifiedPayload.sub;
// (Do something with it...)
return res.sendStatus(200);
} catch {
// If verification fails, reject the token.
return res.sendStatus(400);
}
});
app.listen(3000);
Login ke aplikasi Firebase
Untuk melihat contoh penggunaan token Firebase PNV dalam alur login Firebase Authentication, lihat halaman Melakukan autentikasi dengan Firebase menggunakan Firebase Phone Number Verification.