Mit einer Telefonnummer über Unity bei Firebase authentifizieren

Du kannst Firebase Authentication verwenden, um einen Nutzer durch Senden einer SMS anzumelden auf das Smartphone der Nutzenden übertragen. Der Nutzer meldet sich mit einem Einmalcode an, der in der SMS enthalten ist.

In diesem Dokument wird beschrieben, wie Sie mit das Firebase SDK.

Hinweis

  1. Vor der Verwendung Firebase Authentication, müssen Sie das Firebase Unity SDK (insbesondere FirebaseAuth.unitypackage) mit Ihrem Unity-Projekt verknüpfen.

    Ausführliche Anleitungen zu diesen Ersteinrichtungsschritten finden Sie unter Firebase zu Ihrer Unity hinzufügen

  2. Wenn Sie Ihre App noch nicht mit Ihrem Firebase-Projekt verbunden haben, tun Sie dies über Firebase-Konsole
  3. Machen Sie sich mit den Plattformanforderungen für die Anmeldung über die Telefonnummer vertraut:
    • Die Anmeldung über eine Telefonnummer ist nur auf Mobilplattformen möglich.
    • Auf iOS-Geräten ist für die Anmeldung mit der Telefonnummer ein physisches Gerät erforderlich. Sie funktioniert nicht auf einem Simulator.

Sicherheitsbedenken

Die Authentifizierung über eine Telefonnummer ist zwar praktisch, aber weniger sicher als die anderen verfügbaren Methoden, da der Besitz einer Telefonnummer leicht zwischen Nutzern übertragen werden. Auf Geräten mit mehreren Nutzern Profilen hinzugefügt, kann sich jeder Nutzer, der SMS-Nachrichten empfangen kann, über Telefonnummer des Geräts.

Wenn Sie sich in Ihrer App über eine Telefonnummer anmelden, sollten Sie diese anbieten und sicherere Anmeldemethoden nutzen und die Nutzer über die Sicherheit informieren, welche Nachteile es bei der Anmeldung über die Telefonnummer hat.

Anmeldung über die Telefonnummer für Ihr Firebase-Projekt aktivieren

Wenn Sie Nutzer per SMS anmelden möchten, müssen Sie zuerst die Anmeldung mit der Telefonnummer aktivieren für Ihr Firebase-Projekt an:

  1. Öffnen Sie in der Firebase-Konsole den Abschnitt Authentifizierung.
  2. Aktivieren Sie auf der Seite Anmeldemethode die Anmeldemethode Telefonnummer.

APNs-Benachrichtigungen erhalten (nur iOS)

Damit Sie die Telefonnummerauthentifizierung auf iOS-Geräten verwenden können, muss Ihre App APNs-Benachrichtigungen von Firebase. Wenn Sie einen Nutzer mit seinem Smartphone anmelden auf einem Gerät zum ersten Mal verwendet, sendet Firebase Authentication einen stillen Push. wird eine Benachrichtigung an das Gerät gesendet, um zu bestätigen, dass die Anfrage zur Anmeldung mit der Telefonnummer eingeht. aus Ihrer App. Aus diesem Grund ist die Anmeldung mit einer Telefonnummer nicht auf Simulator).

So aktivieren Sie APNs-Benachrichtigungen zur Verwendung mit Firebase Authentication:

  1. In Xcode: Push-Benachrichtigungen für Ihr Projekt zu aktivieren.
  2. Laden Sie Ihr APNs-Zertifikat in Firebase hoch. Wenn Sie noch kein APNs-Zertifikat haben, erstellen Sie eines im Apple Developer Member Center

    1. Klicken Sie in der Firebase Console in Ihrem Projekt auf das Zahnradsymbol, dann auf Projekteinstellungen und dann auf den Tab Cloud Messaging.

    2. Wählen Sie das Upload Certificate (Zertifikat hochladen) aus. für Ihr Entwicklungszertifikat, Ihren Produktionszertifikat oder beides. Mindestens eines ist erforderlich.

    3. Wählen Sie für jedes Zertifikat die P12-Datei aus und geben Sie das Passwort, falls vorhanden. Die Paket-ID für dieses Zertifikat muss angegeben werden mit der Bundle-ID Ihrer App übereinstimmt. Auswählen Klicken Sie auf Speichern.

Bestätigungscode an die Telefonnummer des Nutzers senden

Um die Anmeldung über die Telefonnummer zu starten, müssen Sie dem Nutzer eine Oberfläche einblenden, um eine Telefonnummer anzugeben, und rufen Sie dann PhoneAuthProvider.VerifyPhoneNumber, um Firebase anzufordern Authentifizierungscode per SMS an das Telefon des Nutzers senden:

  1. Ermitteln Sie die Telefonnummer des Nutzers.

    Als Best Practice gelten unterschiedliche rechtliche Anforderungen. und die Erwartungen der Nutzenden zu definieren, sollten Sie sie informieren, erhalten sie zur Bestätigung per SMS fallen Gebühren an.

  2. Rufen Sie PhoneAuthProvider.VerifyPhoneNumber auf und übergeben Sie ein PhoneAuthOptions-Objekt. die die Telefonnummer des Nutzers enthält.
    PhoneAuthProvider provider = PhoneAuthProvider.GetInstance(firebaseAuth);
    provider.VerifyPhoneNumber(
      new Firebase.Auth.PhoneAuthOptions {
        PhoneNumber = phoneNumber,
        TimeoutInMilliseconds = phoneAuthTimeoutMs,
        ForceResendingToken = null
      },
      verificationCompleted: (credential) => {
        // Auto-sms-retrieval or instant validation has succeeded (Android only).
        // There is no need to input the verification code.
        // `credential` can be used instead of calling GetCredential().
      },
      verificationFailed: (error) => {
        // The verification code was not sent.
        // `error` contains a human readable explanation of the problem.
      },
      codeSent: (id, token) => {
        // Verification code was successfully sent via SMS.
        // `id` contains the verification id that will need to passed in with
        // the code from the user when calling GetCredential().
        // `token` can be used if the user requests the code be sent again, to
        // tie the two requests together.
      },
      codeAutoRetrievalTimeout: (id) => {
        // Called when the auto-sms-retrieval has timed out, based on the given
        // timeout parameter.
        // `id` contains the verification id of the request that timed out.
      });
    Wenn Sie PhoneAuthProvider.VerifyPhoneNumber aufrufen, werden Firebase
    • (unter iOS) sendet eine stumme Push-Benachrichtigung an Ihre App.
    • Firebase sendet eine SMS mit einer Authentifizierung. an die angegebene Telefonnummer an und sendet eine Bestätigungs-ID an Ihrer Vervollständigungsfunktion. Sie benötigen sowohl den Bestätigungscode und die Bestätigungs-ID, um sich anzumelden.
  3. Speichern Sie die Bestätigungs-ID und stellen Sie sie wieder her, wenn die App geladen wird. Dadurch können Sie prüfen, ob Sie eine gültige Bestätigungs-ID haben, falls Ihre App werden beendet, bevor der Nutzer den Anmeldevorgang abgeschlossen hat (z. B. während zur SMS-App wechseln).

    Sie können die Bestätigungs-ID beliebig beibehalten. Eine einfache Möglichkeit besteht darin, speichern Sie die Bestätigungs-ID in UnityEngine.PlayerPrefs.

Wenn der an codeSent übergebene Callback aufgerufen wird, kannst du Nutzer auffordern, den Bestätigungscode einzugeben, wenn sie ihn per SMS erhalten .

Wenn der Callback für verificationCompleted jedoch ein aufgerufen wurde, war die automatische Bestätigung erfolgreich. PhoneAuthCredential, mit dem Sie wie unten beschrieben verwenden können.

Nutzer mit Bestätigungscode anmelden

Nachdem der Nutzer Ihrer App den Bestätigungscode aus der SMS-Nachricht mitgeteilt hat, melden Sie ihn an, indem Sie ein PhoneAuthCredential-Objekt aus dem Bestätigungscode und der Bestätigungs-ID erstellen und dieses Objekt an FirebaseAuth.SignInAndRetrieveDataWithCredentialAsync übergeben.

  1. Rufen Sie den Bestätigungscode vom Nutzer ab.
  2. Ein Credential-Objekt aus der Überprüfung erstellen und Bestätigungscode.
    PhoneAuthCredential credential =
        phoneAuthProvider.GetCredential(verificationId, verificationCode);
        
  3. Melden Sie den Nutzer mit dem Objekt PhoneAuthCredential an:
    auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task =&gt {
      if (task.IsFaulted) {
        Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " +
                       task.Exception);
        return;
      }
    
      FirebaseUser newUser = task.Result.User;
      Debug.Log("User signed in successfully");
      // This should display the phone number.
      Debug.Log("Phone number: " + newUser.PhoneNumber);
      // The phone number providerID is 'phone'.
      Debug.Log("Phone provider ID: " + newUser.ProviderId);
    });

Nächste Schritte

Nachdem sich ein Nutzer zum ersten Mal angemeldet hat, wird ein neues Nutzerkonto erstellt und die mit den Anmeldedaten verknüpft sind, d. h. Nutzername und Passwort, oder Authentifizierungsanbieter-Informationen – also für den Nutzer, mit dem sich der Nutzer angemeldet hat. Diese neue -Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann verwendet werden, um in jeder App in Ihrem Projekt einen Nutzer erreichen, unabhängig davon, wie er sich anmeldet.

  • Die grundlegenden Profilinformationen der Nutzer finden Sie in Ihren Apps über die Firebase.Auth.FirebaseUser-Objekt:

    Firebase.Auth.FirebaseUser user = auth.CurrentUser;
    if (user != null) {
      string name = user.DisplayName;
      string email = user.Email;
      System.Uri photo_url = user.PhotoUrl;
      // The user's Id, unique to the Firebase project.
      // Do NOT use this value to authenticate with your backend server, if you
      // have one; use User.TokenAsync() instead.
      string uid = user.UserId;
    }
  • In Firebase Realtime Database und Cloud Storage Sicherheitsregeln können Sie die eindeutige Nutzer-ID des angemeldeten Nutzers aus der Variablen auth abrufen, und steuern, auf welche Daten ein Nutzer zugreifen kann.

Sie können Nutzern erlauben, sich mit Mehrfachauthentifizierung in Ihrer App anzumelden indem Sie die Anmeldedaten des Authentifizierungsanbieters mit einem eines bestehenden Nutzerkontos.

Rufen Sie auf, um einen Nutzer abzumelden. SignOut():

auth.SignOut();