المصادقة مع Firebase باستخدام حسابات مستندة إلى كلمة المرور باستخدام Unity

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

قبل البدء

قبل أن تتمكّن من استخدام Firebase Authentication, عليك إجراء ما يلي:

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

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

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

  • أضِف حزمة تطوير البرامج (SDK) Firebase Unity (على وجه التحديد، FirebaseAuth.unitypackage) إلى مشروعك على Unity.

تجدر الإشارة إلى أنّ إضافة منصة Firebase إلى مشروع Unity تتضمّن مهامًا في كلّ من وحدة تحكّم Firebase وفي مشروع Unity المفتوح (على سبيل المثال، يمكنك تنزيل ملفات تهيئة Firebase من وحدة التحكم، ثم نقل إلى مشروع Unity).

الوصول إلى الصف Firebase.Auth.FirebaseAuth

الفئة FirebaseAuth هي مدخل جميع طلبات البيانات من واجهة برمجة التطبيقات. ويمكن الوصول إليه من خلال FirebaseAuth.DefaultInstance.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

إنشاء حساب مستند إلى كلمة مرور

لإنشاء حساب مستخدم جديد باستخدام كلمة مرور، أكمل الخطوات التالية في رمز تسجيل الدخول إلى تطبيقك:

  1. عندما يشترك مستخدم جديد باستخدام نموذج الاشتراك في تطبيقك، أكمِل أي نموذج جديد. خطوات تأكيد الحساب التي يتطلبها تطبيقك، مثل التحقق من أنّ تمّت كتابة كلمة المرور الخاصة بالحساب الجديد بشكل صحيح وبما أنّها تستوفي تعقيدك متطلبات المشروع.
  2. أنشئ حسابًا جديدًا من خلال إرسال عنوان البريد الإلكتروني وكلمة المرور للمستخدم الجديد إلى FirebaseAuth.CreateUserWithEmailAndPassword:
    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);
    });

تسجيل دخول مستخدم باستخدام عنوان بريد إلكتروني وكلمة مرور

تتشابه خطوات تسجيل دخول مستخدم باستخدام كلمة مرور مع خطوات إنشاء حساب جديد. في وظيفة تسجيل الدخول إلى تطبيقك، اتّبِع الخطوات التالية:

  1. عندما يسجّل مستخدم الدخول إلى تطبيقك، عليك إرسال عنوان البريد الإلكتروني للمستخدم وكلماته المرورية إلى FirebaseAuth.SignInWithEmailAndPassword:
    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);
    });
  2. يمكنك أيضًا إنشاء بيانات الاعتماد وتسجيل الدخول على غرار مهام سير العمل الأخرى:
    Firebase.Auth.Credential credential =
        Firebase.Auth.EmailAuthProvider.GetCredential(email, password);
    auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInAndRetrieveDataWithCredentialAsync 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 Authentication سياسات كلمة المرور المتطلبات التالية لكلمة المرور:

  • يجب إدخال حرف صغير.

  • يجب إدخال حرف كبير.

  • يجب إدخال حرف رقمي.

  • يجب إدخال أحرف ليست أبجدية رقمية.

    تستوفي الأحرف التالية شرط الأحرف غير الأبجدية الرقمية: ^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~

  • الحد الأدنى لطول كلمة المرور (يتراوح من 6 إلى 30 حرفًا، والإعداد التلقائي هو 6)

  • الحد الأقصى لطول كلمة المرور (الحد الأقصى 4096 حرفًا)

يمكنك تفعيل فرض سياسة كلمات المرور في وضعَين:

  • طلب: تفشل محاولات تسجيل الدخول إلى أن يغيّر المستخدم كلمة المرور لتكون متوافقة مع سياستك.

  • الإشعار: يُسمح للمستخدمين بتسجيل الدخول باستخدام كلمة مرور غير متوافقة. عند استخدام هذا الوضع، عليك التحقّق مما إذا كانت كلمة مرور المستخدم تمتثل للسياسة من جهة العميل وطلب تعديل كلمة المرور من العميل بطريقة ما إذا كانت لا تمتثل.

على المستخدمين الجدد دائمًا اختيار كلمة مرور تمتثل لسياسة مؤسستك.

إذا كان لديك مستخدمون نشطون، ننصحك بعدم تفعيل وضع "الطلب" ما لم تكن تريد حظر الوصول للمستخدمين الذين لا تلتزم كلمات مرورهم بسياستك. بدلاً من ذلك، استخدِم وضع الإشعارات الذي يسمح للمستخدمين بتسجيل الدخول باستخدام كلمات المرور الحالية وإعلامهم بالمتطلبات التي لا تستوفيها كلمة المرور.

إجراء مقترَح: تفعيل حماية تعداد البريد الإلكتروني

تُظهر بعض طرق Firebase Authentication التي تأخذ عناوين البريد الإلكتروني كمَعلمات أخطاء محدّدة إذا لم يكن عنوان البريد الإلكتروني مسجّلاً عندما يجب أن يكون مسجّلاً (على سبيل المثال، عند تسجيل الدخول باستخدام عنوان بريد إلكتروني وكلمة مرور)، أو مسجّلاً عندما يجب أن يكون غير مستخدَم (على سبيل المثال، عند تغيير عنوان البريد الإلكتروني الخاص بالمستخدم). وفي حين أن هذا قد يكون مفيدًا في اقتراح حلول انتصاف محددة على المستخدمين، إلا أنه يمكنه أيضًا إساءة استخدام من قِبل جهات ضارة لاكتشاف عناوين البريد الإلكتروني المسجّلة بواسطة المستخدمين.

للتخفيف من هذه الخطر، ننصحك بتفعيل الحماية من تعداد البريد الإلكتروني. لمشروعك باستخدام أداة gcloud في Google Cloud. لاحظ أن تفعيل هذا تغييرات في سلوك ميزة الإبلاغ عن أخطاء Firebase Authentication: تأكد من تطبيقك لا يعتمد على الأخطاء الأكثر تحديدًا.

الخطوات التالية

بعد أن يسجّل المستخدم الدخول لأول مرة، يتم إنشاء حساب مستخدم جديد وربطه ببيانات الاعتماد التي استخدمها المستخدم لتسجيل الدخول، أي اسم المستخدم وكلمة المرور أو رقم الهاتف أو معلومات مقدّم خدمة المصادقة. هذا الجديد كجزء من مشروع 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();