با Firebase با استفاده از یک سیستم احراز هویت سفارشی و Unity احراز هویت کنید

می‌توانید با تغییر سرور احراز هویت خود برای تولید نشانه‌های امضا شده سفارشی زمانی که کاربر با موفقیت وارد سیستم می‌شود، Firebase Authentication با یک سیستم احراز هویت سفارشی ادغام کنید. برنامه شما این نشانه را دریافت می‌کند و از آن برای احراز هویت با Firebase استفاده می‌کند.

قبل از شروع

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

    • پروژه Unity خود را با پروژه Firebase خود ثبت کنید.
    • Firebase Unity SDK (مخصوصا FirebaseAuth.unitypackage ) را به پروژه Unity خود اضافه کنید.

    دستورالعمل های دقیق برای این مراحل اولیه راه اندازی را در افزودن Firebase به پروژه Unity خود بیابید.

  2. کلیدهای سرور پروژه خود را دریافت کنید:
    1. در تنظیمات پروژه خود به صفحه حساب های سرویس بروید.
    2. روی Generate New Private Key در پایین بخش Firebase Admin SDK صفحه حساب‌های سرویس کلیک کنید.
    3. جفت کلید عمومی/خصوصی حساب سرویس جدید به طور خودکار در رایانه شما ذخیره می شود. این فایل را در سرور احراز هویت خود کپی کنید.

با Firebase احراز هویت

کلاس FirebaseAuth دروازه همه تماس‌های API است. از طریق FirebaseAuth.DefaultInstance قابل دسترسی است.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync را با توکن سرور احراز هویت خود تماس بگیرید.

  1. وقتی کاربران وارد برنامه شما می‌شوند، اعتبار ورود به سیستم (به عنوان مثال، نام کاربری و رمز عبور آنها) را به سرور احراز هویت خود ارسال کنید. سرور شما اعتبارنامه ها را بررسی می کند و در صورت معتبر بودن یک توکن سفارشی برمی گرداند.
  2. پس از دریافت رمز سفارشی از سرور احراز هویت خود، آن را به Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync ارسال کنید تا وارد کاربر شود:
    auth.SignInWithCustomTokenAsync(custom_token).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithCustomTokenAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCustomTokenAsync 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);
    });

مراحل بعدی

پس از اینکه کاربر برای اولین بار وارد سیستم شد، یک حساب کاربری جدید ایجاد می‌شود و به اعتبارنامه‌ها (یعنی نام کاربری و رمز عبور، شماره تلفن یا اطلاعات ارائه‌دهنده تاییدیه) مرتبط می‌شود که کاربر با آن وارد شده است. این حساب جدید به‌عنوان بخشی از پروژه Firebase شما ذخیره می‌شود و می‌توان از آن برای شناسایی کاربر در همه برنامه‌های پروژه شما، صرف نظر از نحوه ورود کاربر به سیستم استفاده کرد.

  • در برنامه های خود، می توانید اطلاعات اولیه نمایه کاربر را از شی Firebase.Auth.FirebaseUser دریافت کنید:

    Firebase.Auth.FirebaseUser user = auth.CurrentUser;
    if (user != null) {
      string name = user.DisplayName;
      string email = user.Email;
      System.Uri photo_url = user.PhotoUrl;
      // The user's Id, unique to the Firebase project.
      // Do NOT use this value to authenticate with your backend server, if you
      // have one; use User.TokenAsync() instead.
      string uid = user.UserId;
    }
  • در قوانین امنیتی Firebase Realtime Database و Cloud Storage خود، می‌توانید شناسه کاربری منحصر به فرد کاربر واردشده به سیستم را از متغیر auth دریافت کنید و از آن برای کنترل داده‌هایی که کاربر می‌تواند به آن دسترسی داشته باشد استفاده کنید.

می‌توانید به کاربران اجازه دهید با استفاده از چندین ارائه‌دهنده احراز هویت، با پیوند دادن اعتبار ارائه‌دهنده تأیید اعتبار به یک حساب کاربری موجود، به برنامه شما وارد شوند.

برای خروج از سیستم کاربر، SignOut() را فراخوانی کنید:

auth.SignOut();