Erste Schritte mit der Firebase-Bestätigung der Telefonnummer unter Android

Auf dieser Seite wird beschrieben, wie Sie Firebase Phone Number Verification in einer Android-App verwenden. Eine allgemeine Beschreibung dieser Funktion finden Sie in der Übersicht.

Auf dieser Seite wird beschrieben, wie Sie die Firebase-Bestätigung der Telefonnummer mit der einheitlichen API mit nur einem Aufruf einbinden.Firebase PNV Durch Aufrufen einer einzelnen Methode wird der gesamte Firebase PNV Nutzerablauf abgewickelt, von der Einholung der Nutzereinwilligung bis hin zu den erforderlichen Netzwerkaufrufen an das Firebase PNV Back-End. Mit dieser Methode reduzieren Sie die Einbindungsschritte auf einen einzigen Methodenaufruf.

Diese API wird den meisten Entwicklern empfohlen. Wenn Sie jedoch spezielle Anforderungen haben, die von der Bibliothek nicht erfüllt werden, finden Sie auf der Seite Ablauf der Firebase Phone Number Verification anpassen Informationen zur Implementierung eines benutzerdefinierten Ablaufs.

Hinweis

  1. Für die Ausführung der Onboarding-Schritte, einschließlich der OAuth-Markenüberprüfung, sind Rechte als Projektinhaber erforderlich.

  2. Sie benötigen eine öffentlich zugängliche Datenschutzerklärung, um die OAuth-Markenüberprüfung abzuschließen. Mit Firebase Hosting können Sie eine einfache Web-App erstellen, um Ihre Test-Datenschutzerklärung zu hosten.

  3. Sie benötigen eine SIM-Karte eines der unterstützten Mobilfunkanbieter, um Tests durchzuführen.

1. Das Firebase-Projekt einrichten

  1. Fügen Sie Ihrem Android-Projekt Firebase hinzu, falls noch nicht geschehen.

  2. Wenn Sie den SHA‑256-Fingerabdruck Ihrer App noch nicht in der Firebase Console angegeben haben, tun Sie dies in den Projekteinstellungen. Weitere Informationen zum Abrufen des SHA‑256-Fingerabdrucks Ihrer App finden Sie unter Client authentifizieren.

  3. Sie müssen den Onboarding-Prozess für die erstmalige Nutzung in der Firebase Console abschließen. Dazu gehören die OAuth-Markenüberprüfung, und eine Überprüfung der Datenschutzerklärung. Wenn Sie eine Test-App für die Nicht-Produktionsumgebung vorbereiten , können Sie mit Firebase Hosting eine einfache Web-App erstellen, um Ihre Test-Datenschutzerklärung zu hosten.

  4. Firebase PNV erfordert den Blaze-Tarif. Wenn Sie Ihr Projekt noch nicht auf den Blaze-Tarif (Pay as you go) umgestellt haben, werden Sie während des Onboardings dazu aufgefordert.

    Für Firebase PNV muss ein Rechnungskonto mit Ihrem Firebase Projekt verknüpft sein. Während der Vorschauphase wird Ihnen der Dienst jedoch nicht in Rechnung gestellt.

  5. Öffnen Sie auf der Seite Anmeldedaten der Console Ihren Android-API-Schlüssel und fügen Sie die Firebase Phone Number Verification API der Liste der ausgewählten APIs hinzu.

2. Die Firebase PNV Bibliothek Ihrer App hinzufügen

Fügen Sie in der Gradle-Datei Ihres Moduls (auf Anwendungsebene) (in der Regel <project>/<app-module>/build.gradle.kts oder <project>/<app-module>/build.gradle) die Abhängigkeit für die Firebase Phone Number Verification Bibliothek für Android hinzu.

dependencies {
    // Add the dependency for the Firebase Phone Number Verification library
    implementation("com.google.firebase:firebase-pnv:16.0.0")
}

3. Empfohlen: Unterstützung für Firebase PNV prüfen

Damit Sie entscheiden können, wann die UI für die Eingabe der Telefonnummer oder die UI mit Erklärungen angezeigt werden soll, empfiehlt es sich, beim Start der App zu prüfen, ob das Gerät und die SIM-Karte unterstützen Firebase PNV. Dies ist eine Vorabprüfung, für die keine Nutzereinwilligung erforderlich ist. Anhand des Ergebnisses dieses Tests können Sie entscheiden, ob Sie den Ablauf der Firebase PNV starten oder eine alternative Methode zur Bestätigung der Telefonnummer verwenden möchten, z. B. per SMS.

Rufen Sie die Methode getVerificationSupportInfo() auf, um die Kompatibilität des Geräts zu prüfen:

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.
  }

Die Methode getVerificationSupportInfo() gibt eine Liste von VerificationSupportResult-Objekten zurück, eines für jeden SIM-Steckplatz. Wenn mindestens eine SIM-Karte unterstützt wird, können Sie mit dem Firebase PNV Ablauf fortfahren.

4. Bestätigungsablauf starten

Erstellen Sie eine neue Instanz von FirebasePhoneNumberVerification und übergeben Sie einen Activity Kontext, um den Firebase PNV Ablauf zu starten. Ein Activity-Kontext ist erforderlich, damit das SDK dem Nutzer einen Zustimmungsbildschirm präsentieren kann. Rufen Sie dann die Methode getVerifiedPhoneNumber() des Objekts auf:

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.
  }

Die Methode getVerifiedPhoneNumber() führt den gesamten Ablauf der Bestätigung der Telefonnummer aus, einschließlich:

  • Verwendung des Android Credential Manager, um die Nutzereinwilligung zur Weitergabe der Telefonnummer einzuholen.
  • Senden der Anfrage an das Firebase PNV Back-End.
  • Zurückgeben einer bestätigten Telefonnummer für das Gerät (hier erfolgt die Abrechnung).

5. Das Firebase PNV Token verwenden

Wenn der Ablauf erfolgreich ist, gibt die Methode getVerifiedPhoneNumber() die bestätigte Telefonnummer und ein signiertes Token zurück, das diese enthält. Sie können diese Daten in Ihrer App gemäß Ihrer Datenschutzerklärung verwenden.

Wenn Sie die bestätigte Telefonnummer außerhalb des App-Clients verwenden, sollten Sie das Token anstelle der Telefonnummer selbst weitergeben, damit Sie die Integrität des Tokens überprüfen können, wenn Sie es verwenden. Zum Überprüfen des Tokens können Sie eine beliebige JWT-Überprüfungsbibliothek verwenden. Verwenden Sie die Bibliothek, um Folgendes zu überprüfen:

  • Der Header typ ist auf JWT gesetzt.

  • Das Token wird mit einem der Schlüssel signiert, die am Firebase PNV JWKS Endpunkt mit dem ES256 Algorithmus veröffentlicht wurden:

    https://fpnv.googleapis.com/v1beta/jwks
    
  • Die Ausstelleransprüche enthalten Ihre Firebase-Projektnummer und haben das folgende Format:

    https://fpnv.googleapis.com/projects/FIREBASE_PROJECT_NUMBER
    

    Ihre Firebase-Projektnummer finden Sie auf der Seite Projekteinstellungen der Firebase Console.

  • Der Zielgruppenanspruch ist eine Liste, die Ihre Firebase-Projektnummer und -Projekt-ID enthält und das folgende Format hat:

    [
      https://fpnv.googleapis.com/projects/FIREBASE_PROJECT_NUMBER,
      https://fpnv.googleapis.com/projects/FIREBASE_PROJECT_ID,
    ]
    
  • Das Token ist nicht abgelaufen.

Beispiel

Im folgenden kurzen Beispiel empfängt eine Express.js-App ein Firebase PNV Token aus einer HTTP-POST Anfrage und verwendet eine JWT-Überprüfungsbibliothek, um die Signatur und die Ansprüche des Tokens zu überprüfen:

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);

In einer Firebase-App anmelden

Ein Beispiel für die Verwendung des Firebase PNV Tokens in einem Firebase Authentication Anmeldeablauf, finden Sie auf der Seite Mit Firebase über die Firebase Phone Number Verification authentifizieren.