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

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

قبل ان تبدأ

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

  • قم بتسجيل مشروع Unity الخاص بك وقم بتكوينه لاستخدام Firebase.

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

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

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

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

قم بالوصول إلى فئة Firebase.Auth.FirebaseAuth

فئة FirebaseAuth هي البوابة لجميع استدعاءات واجهة برمجة التطبيقات (API). يمكن الوصول إليه من خلال 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 التي تأخذ عناوين البريد الإلكتروني كمعلمات إلى ظهور أخطاء محددة إذا كان عنوان البريد الإلكتروني غير مسجل عندما يجب تسجيله (على سبيل المثال، عند تسجيل الدخول باستخدام عنوان بريد إلكتروني وكلمة مرور)، أو مسجل عندما يجب أن يكون غير مستخدم (على سبيل المثال، عند تغيير عنوان البريد الإلكتروني للمستخدم). على الرغم من أن هذا يمكن أن يكون مفيدًا في اقتراح حلول محددة للمستخدمين، إلا أنه يمكن أيضًا إساءة استخدامه من قبل جهات ضارة لاكتشاف عناوين البريد الإلكتروني المسجلة بواسطة المستخدمين.

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

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

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