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 einheitliche API mit nur einem Aufruf in Firebase PNV einbinden. Durch Aufrufen einer einzelnen Methode wird der gesamte Firebase PNV-User Flow abgewickelt, von der Einholung der Nutzereinwilligung bis hin zu den erforderlichen Netzwerkaufrufen an das Firebase PNV-Backend. Mit dieser Methode reduzieren Sie die Integrationsschritte auf einen einzelnen 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 Firebase Phone Number Verification-Ablauf anpassen Informationen zur Implementierung eines benutzerdefinierten Ablaufs.

Hinweis

Sie müssen die Datenschutzerklärung Ihrer App auf einer öffentlich zugänglichen Website veröffentlichen. Auf dieser Seite müssen Sie Ihren Nutzern erklären, wie Sie die mit Firebase Phone Number Verification abgerufenen Telefonnummern verwenden. Die Firebase PNV-Bibliothek verweist auf diese Seite, wenn Nutzer um die Einwilligung gebeten werden, ihre Telefonnummer für Ihre App freizugeben.

1. Das Firebase-Projekt einrichten

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

  2. Für Firebase PNV ist der Tarif „Blaze“ erforderlich. Wenn Sie Ihr Projekt noch nicht auf den Blaze-Tarif (Pay as you go) umgestellt haben, tun Sie dies jetzt.

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

  4. Öffnen Sie Ihr Firebase-Projekt in der Google Cloud Console und aktivieren Sie die Firebase Phone Number Verification API.

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

2. Firebase PNV-Bibliothek zur App hinzufügen

Fügen Sie in der Gradle-Datei Ihres Moduls (auf App-Ebene) (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-beta01")
}

3. Optional: Firebase PNV-Support prüfen

Bevor Sie den Bestätigungsvorgang starten, können Sie prüfen, ob das Gerät und seine SIM-Karte die API-basierte Bestätigung der Telefonnummer unterstützen. Dies ist eine Vorabprüfung, für die keine Nutzereinwilligung erforderlich ist. Anhand des Ergebnisses dieses Tests können Sie entscheiden, ob Sie den Firebase PNV-Ablauf 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 getVerificationSupportInfo() gibt eine Liste von VerificationSupportResult-Objekten zurück, eines für jeden SIM-Slot. Wenn mindestens eine SIM-Karte unterstützt wird, können Sie mit dem Firebase PNV-Ablauf fortfahren.

4. Bestätigungsvorgang starten

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

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

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

  • Mit dem Android Credential Manager die Einwilligung des Nutzers zum Teilen seiner Telefonnummer einholen.
  • Stellen Sie die Anfrage an das Firebase PNV-Back-End.
  • Gibt eine bestätigte Telefonnummer für das Gerät zurück.

5. Firebase PNV-Token verwenden

Wenn der Ablauf erfolgreich ist, gibt die Methode getVerifiedPhoneNumber() die bestätigte Telefonnummer und ein signiertes Token zurück, das sie 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 übergeben, damit Sie die Integrität des Tokens bei der Verwendung überprüfen können. Zum Überprüfen des Tokens können Sie eine beliebige JWT-Bibliothek verwenden. Mit der Bibliothek können Sie Folgendes überprüfen:

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

    https://fpnv.googleapis.com/v1beta/jwks
    
  • Die Ansprüche „audience“ und „issuer“ enthalten Ihre Firebase-Projektnummer und haben das folgende Format:

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

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

  • Das Token ist nicht abgelaufen.

Beispiel

Im folgenden kurzen Beispiel empfängt die 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 prü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 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);

In einer Firebase-App anmelden

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