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

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

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

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

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

  2. کلیدهای سرور پروژه خود را دریافت کنید:
    1. در کنسول Firebase ، به مسیر زیر بروید: > برگه حساب‌های سرویس .
    2. در پایین بخش Firebase Admin SDK ، روی «ایجاد کلید خصوصی جدید» کلیک کنید.
    3. جفت کلید عمومی/خصوصی حساب سرویس جدید به طور خودکار در رایانه شما ذخیره می‌شود. این فایل را در سرور احراز هویت خود کپی کنید.

احراز هویت با فایربیس

کلاس 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;
    }
  • در قوانین امنیتی پایگاه داده و Cloud Storage Firebase Realtime Database ، می‌توانید شناسه کاربری منحصر به فرد کاربر وارد شده را از متغیر auth دریافت کنید و از آن برای کنترل داده‌هایی که کاربر می‌تواند به آنها دسترسی داشته باشد، استفاده کنید.

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

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

auth.SignOut();