قم بالمصادقة باستخدام Firebase باستخدام نظام مصادقة مخصص وUnity

يمكنك دمج مصادقة Firebase مع نظام مصادقة مخصص عن طريق تعديل خادم المصادقة الخاص بك لإنتاج رموز مميزة موقعة عندما يقوم المستخدم بتسجيل الدخول بنجاح. يتلقى تطبيقك هذا الرمز المميز ويستخدمه للمصادقة مع Firebase.

قبل ان تبدأ

  1. قبل أن تتمكن من استخدام مصادقة Firebase ، تحتاج إلى:

    • سجل مشروع Unity الخاص بك مع مشروع Firebase الخاص بك.
    • قم بإضافة Firebase Unity SDK (على وجه التحديد، FirebaseAuth.unitypackage ) إلى مشروع Unity الخاص بك.

    يمكنك العثور على تعليمات تفصيلية لخطوات الإعداد الأولية هذه في إضافة Firebase إلى مشروع Unity الخاص بك .

  2. احصل على مفاتيح خادم مشروعك:
    1. انتقل إلى صفحة حسابات الخدمة في إعدادات مشروعك.
    2. انقر فوق إنشاء مفتاح خاص جديد أسفل قسم 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 وقواعد أمان التخزين السحابي، يمكنك الحصول على معرف المستخدم الفريد للمستخدم الذي قام بتسجيل الدخول من متغير auth ، واستخدامه للتحكم في البيانات التي يمكن للمستخدم الوصول إليها.

يمكنك السماح للمستخدمين بتسجيل الدخول إلى تطبيقك باستخدام موفري مصادقة متعددين عن طريق ربط بيانات اعتماد موفر المصادقة بحساب مستخدم موجود.

لتسجيل خروج مستخدم، اتصل بـ SignOut() :

auth.SignOut();