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

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

לפני שמתחילים

לפני שמשתמשים Firebase Authentication צריך:

  • רושמים את הפרויקט ב-Unity ומגדירים אותו לשימוש ב-Firebase.

    • אם בפרויקט ב-Unity כבר נעשה שימוש ב-Firebase, הוא כבר משתמש ב-Firebase רשומה והוגדרה ל-Firebase.

    • אם אין לכם פרויקט ב-Unity, תוכלו להוריד אפליקציה לדוגמה.

  • מוסיפים את ה-SDK Firebase Unity (באופן ספציפי, 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 רץ רק אחרי שאובייקט האימות בוצע אתחול מלא ולאחר סיום כל שיחות הרשת, מומלץ מקום לקבלת מידע על המשתמש המחובר.

רושמים את הגורם המטפל באירועים באמצעות 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;
}

השלבים הבאים

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