Cette page explique comment utiliser Firebase Phone Number Verification dans une application Android. Pour obtenir une description générale de cette fonctionnalité, consultez la présentation.
Cette page explique comment intégrer Firebase PNV à l'aide de l'API unifiée à appel unique. L'appel d'une seule méthode gère l'intégralité du flux utilisateur Firebase PNV, de l'obtention du consentement de l'utilisateur à l'exécution des appels réseau nécessaires au backend Firebase PNV. Cette méthode vous permet de réduire les étapes d'intégration à un seul appel de méthode.
Cette API est recommandée pour la plupart des développeurs. Toutefois, si vous avez des exigences spécifiques qui ne sont pas satisfaites par la bibliothèque, consultez la page Personnaliser le flux Firebase Phone Number Verification pour savoir comment implémenter un flux personnalisé.
Avant de commencer
Vous devez publier les règles de confidentialité de votre application sur un site Web accessible au public. Sur cette page, vous devez expliquer à vos utilisateurs comment vous utilisez les numéros de téléphone récupérés à l'aide de Firebase Phone Number Verification. La bibliothèque Firebase PNV redirigera vers cette page lorsqu'elle demandera aux utilisateurs l'autorisation de partager leur numéro de téléphone avec votre application.
1. Configurer votre projet Firebase
Ajoutez Firebase à votre projet Android si vous ne l'avez pas déjà fait.
Firebase PNV nécessite la formule Blaze. Si vous n'avez pas encore migré votre projet vers le forfait Blaze avec paiement à l'usage, faites-le.
Bien que Firebase PNV nécessite qu'un compte de facturation soit associé à votre projet Firebase, vous ne serez pas facturé pour le service pendant la phase d'aperçu.
Si vous n'avez pas encore spécifié l'empreinte SHA-256 de votre application dans la console Firebase, faites-le depuis les paramètres du projet. Pour savoir comment obtenir l'empreinte SHA-256 de votre application, consultez Authentifier votre client.
Ouvrez votre projet Firebase dans la console Google Cloud et activez l'API Firebase Phone Number Verification.
Sur la page Identifiants de la console, ouvrez votre clé API Android et ajoutez l'API Firebase Phone Number Verification à la liste des API sélectionnées.
2. Ajouter la bibliothèque Firebase PNV à votre application
Dans le fichier Gradle de votre module (au niveau de l'application) (généralement <project>/<app-module>/build.gradle.kts
ou <project>/<app-module>/build.gradle
), ajoutez la dépendance pour la bibliothèque Firebase Phone Number Verification pour Android.
dependencies {
// Add the dependency for the Firebase Phone Number Verification library
implementation("com.google.firebase:firebase-pnv:16.0.0-beta01")
}
3. Facultatif : Vérifier la compatibilité avec Firebase PNV
Avant de lancer le processus de validation, vous pouvez vérifier si l'appareil et sa carte SIM sont compatibles avec la validation du numéro de téléphone basée sur l'API. Il s'agit d'un pré-contrôle qui ne nécessite pas le consentement de l'utilisateur. Vous pouvez utiliser le résultat de ce test pour décider de lancer le flux Firebase PNV ou d'utiliser une autre méthode de validation du numéro de téléphone, comme les SMS.
Pour vérifier la compatibilité de l'appareil, appelez la méthode 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()
renvoie une liste d'objets VerificationSupportResult
, un pour chaque emplacement SIM. Si au moins une carte SIM est compatible, vous pouvez poursuivre le flux Firebase PNV.
4. Lancer le processus de validation
Pour lancer le flux Firebase PNV, créez une instance de FirebasePhoneNumberVerification
en transmettant un contexte Activity
. Un contexte Activity
est nécessaire pour que le SDK présente un écran d'autorisation à l'utilisateur. Appelez ensuite la méthode getVerifiedPhoneNumber()
de l'objet :
Kotlin
// Get an instance of the SDK _with an Activity context_:
val fpnv = FirebasePhoneNumberVerification.getInstance(this@MainActivity)
// Call getVerifiedPhoneNumber
fpnv.getVerifiedPhoneNumber("https://example.com/privacy-policy")
.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.
}
La méthode getVerifiedPhoneNumber()
exécute l'intégralité du flux de validation du numéro de téléphone, y compris :
- Utilisation du Gestionnaire d'identifiants Android pour obtenir le consentement de l'utilisateur à partager son numéro de téléphone.
- Envoyez la requête au backend Firebase PNV.
- Renvoie un numéro de téléphone validé pour l'appareil.
5. Utiliser le jeton Firebase PNV
Si le flux réussit, la méthode getVerifiedPhoneNumber()
renvoie le numéro de téléphone validé et un jeton signé le contenant. Vous pouvez utiliser ces données dans votre application, comme indiqué dans vos règles de confidentialité.
Si vous utilisez le numéro de téléphone validé en dehors du client de l'application, vous devez transmettre le jeton au lieu du numéro de téléphone lui-même afin de pouvoir vérifier son intégrité lorsque vous l'utilisez. Pour valider le jeton, vous pouvez utiliser n'importe quelle bibliothèque de validation JWT. Utilisez la bibliothèque pour vérifier tous les éléments suivants :
Le jeton est signé à l'aide de l'une des clés publiées au point de terminaison JWKS Firebase PNV :
https://fpnv.googleapis.com/v1beta/jwks
Les revendications d'audience et d'émetteur contiennent le numéro de votre projet Firebase et sont au format suivant :
https://fpnv.googleapis.com/projects/FIREBASE_PROJECT_NUMBER
Vous trouverez le numéro de votre projet Firebase sur la page Paramètres du projet de la console Firebase.
Le jeton n'a pas expiré.
Exemple
Voici un bref exemple : l'application Express.js suivante reçoit un jeton Firebase PNV à partir d'une requête HTTP POST
et utilise une bibliothèque de validation JWT pour vérifier la signature et les revendications du jeton :
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 above.
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);
Se connecter à une application Firebase
Pour obtenir un exemple d'utilisation du jeton Firebase PNV dans un flux de connexion Firebase Authentication, consultez la page S'authentifier avec Firebase à l'aide de Firebase Phone Number Verification.