Mit Firebase Authentication können Sie einen Nutzer anmelden, indem Sie eine SMS an sein Smartphone senden. Der Nutzer meldet sich mit einem Einmalcode an, der in der SMS enthalten ist.
In diesem Dokument wird beschrieben, wie Sie einen Anmeldevorgang mit Telefonnummer mithilfe des Firebase SDK implementieren.
Hinweis
-
Bevor Sie Firebase Authentication verwenden können, müssen Sie das Firebase Unity SDK (insbesondere
FirebaseAuth.unitypackage
) zu Ihrem Unity-Projekt hinzufügen.Eine detaillierte Anleitung für diese ersten Einrichtungsschritte finden Sie unter Firebase zu einem Unity-Projekt hinzufügen.
- Wenn Sie Ihre App noch nicht mit Ihrem Firebase-Projekt verknüpft haben, holen Sie das in der Firebase Console nach.
- Machen Sie sich mit den Plattformanforderungen für die Anmeldung mit Telefonnummer vertraut:
- Die Anmeldung über Telefonnummer ist nur für mobile Plattformen verfügbar.
- Unter iOS ist für die Anmeldung mit Telefonnummer ein physisches Gerät erforderlich. Die Anmeldung funktioniert nicht auf einem Simulator.
Sicherheitsbedenken
Die Authentifizierung nur mit einer Telefonnummer ist zwar praktisch, aber weniger sicher als die anderen verfügbaren Methoden, da der Besitz einer Telefonnummer leicht zwischen Nutzern übertragen werden kann. Außerdem kann sich auf Geräten mit mehreren Nutzerprofilen jeder Nutzer, der SMS empfangen kann, mit der Telefonnummer des Geräts in einem Konto anmelden.
Wenn Sie die Anmeldung per Telefonnummer in Ihrer App anbieten, sollten Sie sie zusammen mit sichereren Anmeldemethoden anbieten und Nutzer über die Sicherheitsrisiken der Anmeldung per Telefonnummer informieren.
Anmeldung per Telefonnummer für Ihr Firebase-Projekt aktivieren
Wenn Sie Nutzer per SMS anmelden möchten, müssen Sie zuerst die Anmeldemethode „Telefonnummer“ für Ihr Firebase-Projekt aktivieren:
- Öffnen Sie in der Firebase-Konsole den Abschnitt Authentifizierung.
- Aktivieren Sie auf der Seite Sign-in Method (Anmeldemethode) die Anmeldemethode Phone Number (Telefonnummer).
- Optional: Legen Sie auf der Seite Einstellungen eine Richtlinie für die Regionen fest, in die Sie SMS-Nachrichten senden möchten. Durch Festlegen einer SMS-Regionsrichtlinie können Sie Ihre Apps vor SMS-Missbrauch schützen.
APNs-Benachrichtigungen erhalten (nur iOS)
Wenn Sie die Telefonnummernauthentifizierung unter iOS verwenden möchten, muss Ihre App APNs-Benachrichtigungen von Firebase empfangen können. Wenn Sie einen Nutzer zum ersten Mal auf einem Gerät mit seiner Telefonnummer anmelden, sendet Firebase Authentication eine stille Push-Benachrichtigung an das Gerät, um zu bestätigen, dass die Anmeldeanfrage für die Telefonnummer von Ihrer App stammt. Aus diesem Grund kann die Anmeldung mit der Telefonnummer nicht auf einem Simulator verwendet werden.
So aktivieren Sie APN-Benachrichtigungen zur Verwendung mit Firebase Authentication:
- Aktivieren Sie Push-Benachrichtigungen für Ihr Projekt in Xcode.
Laden Sie Ihr APNs-Zertifikat in Firebase hoch. Wenn Sie noch kein APNs-Zertifikat haben, erstellen Sie eines im Apple Developer Member Center.
-
Wählen Sie in Ihrem Projekt in der Firebase-Konsole das Zahnradsymbol aus, dann Projekteinstellungen und schließlich den Tab Cloud Messaging.
-
Klicken Sie für Ihr Entwicklerzertifikat, Ihr Produktionszertifikat oder beides auf die Schaltfläche Zertifikat hochladen. Mindestens eine ist erforderlich.
-
Wählen Sie für jedes Zertifikat die .p12-Datei aus und geben Sie das Passwort an, falls erforderlich. Achten Sie darauf, dass die Paket-ID für dieses Zertifikat mit der Paket-ID Ihrer App übereinstimmt. Wählen Sie Speichern aus.
-
Bestätigungscode an das Mobiltelefon des Nutzers senden
Um die Anmeldung mit Telefonnummer zu initiieren, präsentieren Sie dem Nutzer eine Schnittstelle, in der er aufgefordert wird, seine Telefonnummer anzugeben. Rufen Sie dann PhoneAuthProvider.VerifyPhoneNumber
auf, um Firebase aufzufordern, einen Authentifizierungscode per SMS an das Telefon des Nutzers zu senden:
-
Die Telefonnummer des Nutzers abrufen.
Die rechtlichen Anforderungen variieren. Als Best Practice und um die Erwartungen Ihrer Nutzer zu erfüllen, sollten Sie sie jedoch darüber informieren, dass sie bei der Anmeldung mit dem Smartphone möglicherweise eine SMS zur Bestätigung erhalten und dass die üblichen Gebühren anfallen.
- Rufen Sie
PhoneAuthProvider.VerifyPhoneNumber
auf und übergeben Sie ein PhoneAuthOptions-Objekt mit der Telefonnummer des Nutzers. Wenn SiePhoneAuthProvider 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. });
PhoneAuthProvider.VerifyPhoneNumber
aufrufen, Firebase,- (unter iOS) eine stille Push-Benachrichtigung an Ihre App sendet.
- Firebase sendet eine SMS mit einem Authentifizierungscode an die angegebene Telefonnummer und übergibt eine Bestätigungs-ID an Ihre Abschlussfunktion. Sie benötigen sowohl den Bestätigungscode als auch die Bestätigungs-ID, um den Nutzer anzumelden.
-
Speichern Sie die Bestätigungs-ID und stellen Sie sie wieder her, wenn Ihre App geladen wird. So können Sie sicherstellen, dass Sie weiterhin eine gültige Bestätigungs-ID haben, wenn Ihre App beendet wird, bevor der Nutzer den Anmeldevorgang abschließt (z. B. beim Wechsel zur SMS-App).
Sie können die Bestätigungs-ID auf beliebige Weise speichern. Eine einfache Möglichkeit ist, die Bestätigungs-ID mit
UnityEngine.PlayerPrefs
zu speichern.
Wenn der an codeSent
übergebene Callback aufgerufen wird, können Sie den Nutzer auffordern, den Bestätigungscode einzugeben, wenn er ihn per SMS erhält.
Wenn der Callback für verificationCompleted
aufgerufen wird, war die automatische Bestätigung erfolgreich und Sie haben jetzt ein PhoneAuthCredential
, das Sie wie unten beschrieben verwenden können.
Nutzer mit dem Bestätigungscode anmelden
Nachdem der Nutzer Ihrer App den Bestätigungscode aus der SMS-Nachricht zur Verfügung gestellt 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.
- Fordern Sie den Bestätigungscode vom Nutzer an.
- Erstellen Sie ein
Credential
-Objekt aus dem Bestätigungscode und der Bestätigungs-ID.PhoneAuthCredential credential = phoneAuthProvider.GetCredential(verificationId, verificationCode);
- Melden Sie den Nutzer mit dem
PhoneAuthCredential
-Objekt an:auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => { 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
Wenn sich ein Nutzer zum ersten Mal anmeldet, wird ein neues Nutzerkonto erstellt und mit den Anmeldedaten verknüpft, mit denen sich der Nutzer angemeldet hat, also mit dem Nutzernamen und Passwort, der Telefonnummer oder den Informationen des Authentifizierungsanbieters. Dieses neue Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann verwendet werden, um einen Nutzer in allen Apps Ihres Projekts zu identifizieren, unabhängig davon, wie sich der Nutzer anmeldet.
-
In Ihren Apps können Sie die grundlegenden Profilinformationen des Nutzers aus dem Objekt
Firebase.Auth.FirebaseUser
Firebase.Auth.FirebaseUser
abrufen: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 Ihren Firebase Realtime Database- und Cloud Storage-Sicherheitsregeln können Sie die eindeutige Nutzer-ID des angemeldeten Nutzers aus der Variablen
auth
abrufen und damit steuern, auf welche Daten ein Nutzer zugreifen kann.
Sie können Nutzern erlauben, sich mit mehreren Authentifizierungsanbietern in Ihrer App anzumelden, indem Sie Anmeldedaten des Authentifizierungsanbieters mit einem vorhandenen Nutzerkonto verknüpfen.
Rufen Sie
SignOut()
auf, um einen Nutzer abzumelden:
auth.SignOut();