התחל עם אימות Firebase ב-Unity

אתה יכול להשתמש ב-Firebase Authentication כדי לאפשר למשתמשים להיכנס למשחק שלך באמצעות שיטת כניסה אחת או יותר, כולל כתובת דוא"ל וכניסה לסיסמה, וספקי זהות מאוחדים כגון Google Sign-in ו-Facebook Login. מדריך זה גורם לך להתחיל עם אימות Firebase על ידי מראה לך כיצד להוסיף כתובת דואר אלקטרוני וכניסה לסיסמה למשחק שלך.

לפני שאתה מתחיל

לפני שתוכל להשתמש באימות Firebase , עליך:

  • רשום את פרויקט 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);
});

הגדר מטפל באירוע שינוי מצב אימות וקבל נתוני משתמש

כדי להגיב לאירועי כניסה ויציאה, צרף מטפל באירועים לאובייקט האימות הגלובלי. המטפל הזה נקרא בכל פעם שמצב הכניסה של המשתמש משתנה. מכיוון שהמטפל פועל רק לאחר אתחול מלא של אובייקט האימות ולאחר השלמת כל שיחות רשת, זהו המקום הטוב ביותר לקבל מידע על המשתמש המחובר.

רשום את המטפל באירועים באמצעות השדה StateChanged של אובייקט FirebaseAuth . כאשר משתמש נכנס בהצלחה, אתה יכול לקבל מידע על המשתמש במטפל האירוע.

לבסוף, כאשר האובייקט הזה נקרא Destroy , הוא יקרא אוטומטית ל- OnDestroy . נקה את ההפניות של אובייקט ה-Auth ב- 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;
}

הצעדים הבאים

למד כיצד להוסיף תמיכה לספקי זהות אחרים וחשבונות אורחים אנונימיים: