Mit Firebase Authentication können Sie Nutzern die Möglichkeit geben, sich mit einer oder mehreren Anmeldemethoden in Ihrem Spiel anzumelden, z. B. mit einer E-Mail-Adresse und einem Passwort oder mit föderierten Identitätsanbietern wie Google Log-in und Facebook Log-in. In diesem Tutorial erfahren Sie, wie Sie die Anmeldung mit E-Mail-Adresse und Passwort in Ihr Spiel einfügen.Firebase Authentication
Hinweis
Bevor Sie Firebase Authentication verwenden können, müssen Sie Folgendes tun:
Registrieren Sie Ihr Unity-Projekt und konfigurieren Sie es für die Verwendung von Firebase.
Wenn Ihr Unity-Projekt bereits Firebase verwendet, ist es bereits für Firebase registriert und konfiguriert.
Wenn Sie kein Unity-Projekt haben, können Sie eine Beispiel-App herunterladen.
Fügen Sie Ihrem Unity-Projekt das Firebase Unity SDK (insbesondere
FirebaseAuth.unitypackage
) hinzu.
Das Hinzufügen von Firebase zu Ihrem Unity-Projekt umfasst Aufgaben sowohl in der Firebase-Konsole als auch in Ihrem geöffneten Unity-Projekt. Sie laden beispielsweise Firebase-Konfigurationsdateien aus der Konsole herunter und verschieben sie dann in Ihr Unity-Projekt.
Neue Nutzer registrieren
Erstellen Sie ein Formular, mit dem sich neue Nutzer mit ihrer E-Mail-Adresse und einem Passwort für Ihr Spiel registrieren können. Wenn ein Nutzer das Formular ausfüllt, validieren Sie die vom Nutzer angegebene E-Mail-Adresse und das Passwort und übergeben Sie sie dann an die Methode CreateUserWithEmailAndPasswordAsync
:
auth.CreateUserWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
if (task.IsCanceled) {
Debug.LogError("CreateUserWithEmailAndPasswordAsync was canceled.");
return;
}
if (task.IsFaulted) {
Debug.LogError("CreateUserWithEmailAndPasswordAsync encountered an error: " + task.Exception);
return;
}
// Firebase user has been created.
Firebase.Auth.AuthResult result = task.Result;
Debug.LogFormat("Firebase user created successfully: {0} ({1})",
result.User.DisplayName, result.User.UserId);
});
Vorhandene Nutzer anmelden
Erstellen Sie ein Formular, mit dem sich bestehende Nutzer mit ihrer E-Mail-Adresse und ihrem Passwort anmelden können. Wenn ein Nutzer das Formular ausfüllt, rufen Sie die Methode SignInWithEmailAndPasswordAsync
auf:
auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
if (task.IsCanceled) {
Debug.LogError("SignInWithEmailAndPasswordAsync was canceled.");
return;
}
if (task.IsFaulted) {
Debug.LogError("SignInWithEmailAndPasswordAsync encountered an error: " + task.Exception);
return;
}
Firebase.Auth.AuthResult result = task.Result;
Debug.LogFormat("User signed in successfully: {0} ({1})",
result.User.DisplayName, result.User.UserId);
});
Event-Handler für Änderungen des Authentifizierungsstatus festlegen und Nutzerdaten abrufen
Um auf Anmelde- und Abmeldeereignisse zu reagieren, hängen Sie einen Event-Handler an das globale Authentifizierungsobjekt an. Dieser Handler wird immer dann aufgerufen, wenn sich der Anmeldestatus des Nutzers ändert. Da der Handler erst ausgeführt wird, nachdem das Authentifizierungsobjekt vollständig initialisiert und alle Netzwerkaufrufe abgeschlossen wurden, ist er der beste Ort, um Informationen zum angemeldeten Nutzer abzurufen.
Registrieren Sie den Event-Handler mit dem Feld StateChanged
des FirebaseAuth
-Objekts. Wenn sich ein Nutzer erfolgreich anmeldet, können Sie im Ereignishandler Informationen über den Nutzer abrufen.
Wenn für dieses Objekt Destroy
aufgerufen wird, wird automatisch OnDestroy
aufgerufen. Bereinigen Sie die Referenzen des Auth-Objekts in OnDestroy
.
void InitializeFirebase() {
auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
auth.StateChanged += AuthStateChanged;
AuthStateChanged(this, null);
}
void AuthStateChanged(object sender, System.EventArgs eventArgs) {
if (auth.CurrentUser != user) {
bool signedIn = user != auth.CurrentUser && auth.CurrentUser != null
&& auth.CurrentUser.IsValid();
if (!signedIn && user != null) {
DebugLog("Signed out " + user.UserId);
}
user = auth.CurrentUser;
if (signedIn) {
DebugLog("Signed in " + user.UserId);
displayName = user.DisplayName ?? "";
emailAddress = user.Email ?? "";
photoUrl = user.PhotoUrl ?? "";
}
}
}
void OnDestroy() {
auth.StateChanged -= AuthStateChanged;
auth = null;
}
Nächste Schritte
So fügen Sie Unterstützung für andere Identitätsanbieter und anonyme Gastkonten hinzu: