بدء استخدام مصادقة Firebase في Unity

يمكنك استخدام مصادقة Firebase للسماح للمستخدمين بتسجيل الدخول إلى لعبتك باستخدام طريقة واحدة أو أكثر من طرق تسجيل الدخول، بما في ذلك عنوان البريد الإلكتروني وتسجيل الدخول باستخدام كلمة المرور، وموفِّري الهوية الموحدة مثل "تسجيل الدخول بحساب Google" وتسجيل الدخول إلى Facebook. يساعدك هذا البرنامج التعليمي في بدء استخدام مصادقة Firebase من خلال توضيح كيفية إضافة عنوان بريد إلكتروني وتسجيل الدخول باستخدام كلمة المرور إلى لعبتك.

قبل البدء

قبل أن تتمكن من استخدام مصادقة Firebase، عليك إجراء ما يلي:

  • سجِّل مشروعك على Unity واضبطه لاستخدام Firebase.

    • إذا كان مشروعك في Unity يستخدم Firebase في الوقت الحالي، يعني ذلك أنّه تم تسجيله وإعداده من أجل Firebase.

    • إذا لم يكن لديك مشروع على Unity، يمكنك تنزيل نموذج تطبيق.

  • أضِف حزمة تطوير برامج Unity من Firebase (خصوصًا 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. عليك محو مراجع عنصر المصادقة في 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;
}

الخطوات اللاحقة

تعرَّف على كيفية إتاحة موفِّري الهوية الآخرين وحسابات الضيوف المجهولة الهوية: