با احراز هویت Firebase در Unity شروع کنید

شما می توانید از Firebase Authentication استفاده کنید تا به کاربران اجازه دهید با استفاده از یک یا چند روش ورود به سیستم وارد بازی شما شوند، از جمله ورود به سیستم آدرس ایمیل و رمز عبور، و ارائه دهندگان هویت فدرال مانند Google Sign-in و Facebook Login. این آموزش شما را با Firebase Authentication شروع می کند و به شما نشان می دهد که چگونه آدرس ایمیل و ورود رمز عبور را به بازی خود اضافه کنید.

قبل از اینکه شروع کنی

قبل از اینکه بتوانید از Firebase Authentication استفاده کنید، باید:

  • پروژه Unity خود را ثبت کرده و آن را برای استفاده از Firebase پیکربندی کنید.

    • اگر پروژه Unity شما قبلاً از Firebase استفاده می‌کند، پس از قبل برای Firebase ثبت و پیکربندی شده است.

    • اگر پروژه یونیتی ندارید، می توانید یک برنامه نمونه دانلود کنید.

  • 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;
}

مراحل بعدی

با نحوه افزودن پشتیبانی برای سایر ارائه دهندگان هویت و حساب های مهمان ناشناس آشنا شوید: