אתם יכולים להשתמש ב-Firebase Authentication כדי לאפשר למשתמשים להיכנס למשחק באמצעות שיטה אחת או יותר לכניסה, כולל כניסה באמצעות כתובת אימייל וסיסמה, וספקי זהויות מאוחדות כמו כניסה באמצעות חשבון Google וכניסה באמצעות Facebook. במדריך הזה נסביר איך להתחיל להשתמש ב-Firebase Authentication. נראה לכם איך להוסיף למשחק אפשרות כניסה באמצעות כתובת אימייל וסיסמה.
לפני שמתחילים
כדי להשתמש ב-Firebase Authentication, צריך:
רושמים את הפרויקט ב-Unity ומגדירים אותו לשימוש ב-Firebase.
אם בפרויקט Unity שלכם כבר נעשה שימוש ב-Firebase, הוא כבר רשום ומותאם ל-Firebase.
אם אין לכם פרויקט Unity, אתם יכולים להוריד אפליקציה לדוגמה.
מוסיפים את Firebase Unity SDK (במיוחד את
FirebaseAuth.unitypackage
) לפרויקט Unity.
שימו לב: הוספת Firebase לפרויקט ב-Unity כוללת משימות במסוף Firebase ובפרויקט הפתוח ב-Unity (לדוגמה, הורדה של קובצי תצורה של Firebase מהמסוף והעברה שלהם לפרויקט ב-Unity).
רישום משתמשים חדשים
יוצרים טופס שמאפשר למשתמשים חדשים להירשם למשחק באמצעות כתובת האימייל והסיסמה שלהם. כשמשתמש משלים את הטופס, צריך לאמת את כתובת האימייל והסיסמה שהוא סיפק, ואז להעביר אותן לשיטה 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);
});
כניסה של משתמשים קיימים
יוצרים טופס שמאפשר למשתמשים קיימים להיכנס באמצעות כתובת האימייל והסיסמה שלהם. כשמשתמש משלים את הטופס, קוראים לשיטה SignInWithEmailAndPasswordAsync
:
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);
});
הגדרת handler של אירוע שינוי מצב אימות וקבלת נתוני משתמשים
כדי להגיב לאירועי כניסה ויציאה, צריך לצרף handler של אירועים לאובייקט האימות הגלובלי. ה-handler הזה מופעל בכל פעם שמצב הכניסה של המשתמש משתנה. ה-handler פועל רק אחרי שאובייקט האימות מאותחל באופן מלא ואחרי שכל קריאות הרשת מסתיימות, ולכן זה המקום הכי טוב לקבל מידע על המשתמש שמחובר לחשבון.
רושמים את ה-event handler באמצעות השדה StateChanged
של האובייקט FirebaseAuth
. כשמשתמש מתחבר בהצלחה, אפשר לקבל מידע על המשתמש במטפל באירועים.
לבסוף, כשהאובייקט הזה יקרא ל-Destroy
, הוא יקרא אוטומטית ל-OnDestroy
. מנקים את ההפניות לאובייקט ההרשאה ב-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;
}
השלבים הבאים
איך מוסיפים תמיכה בספקי זהויות אחרים ובחשבונות אורחים אנונימיים