يمكنك استخدام Firebase Authentication للسماح للمستخدمين بالمصادقة باستخدام Firebase من خلال عناوين بريدهم الإلكتروني وكلمات المرور، وإدارة الحسابات المستندة إلى كلمات المرور في تطبيقك.
قبل البدء
قبل أن تتمكّن من استخدام Firebase Authentication، عليك تنفيذ ما يلي:
سجِّل مشروع Unity الخاص بك وأعدَّه لاستخدام Firebase.
إذا كان مشروع Unity يستخدم Firebase، يكون قد تم تسجيله وإعداده لاستخدام Firebase.
إذا لم يكن لديك مشروع Unity، يمكنك تنزيل تطبيق نموذجي.
أضِف Firebase Unity SDK (
FirebaseAuth.unitypackage
تحديدًا) إلى مشروع Unity.
يُرجى العِلم أنّ إضافة Firebase إلى مشروع Unity يتضمّن مهامًا في كل من وحدة تحكّم Firebase ومشروع Unity المفتوح (على سبيل المثال، يمكنك تنزيل ملفات إعداد Firebase من وحدة التحكّم، ثم نقلها إلى مشروع Unity).
الوصول إلى صف Firebase.Auth.FirebaseAuth
فئة FirebaseAuth
هي البوابة لجميع طلبات البيانات من واجهة برمجة التطبيقات.
ويمكن الوصول إليها من خلال FirebaseAuth.DefaultInstance.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
إنشاء حساب يستند إلى كلمة مرور
لإنشاء حساب مستخدم جديد باستخدام كلمة مرور، عليك إكمال الخطوات التالية في رمز تسجيل الدخول الخاص بتطبيقك:
- عندما يشترك مستخدم جديد باستخدام نموذج الاشتراك في تطبيقك، عليك إكمال أي خطوات جديدة للتحقّق من الحساب يتطلّبها تطبيقك، مثل التأكّد من كتابة كلمة مرور الحساب الجديد بشكل صحيح واستيفائها لمتطلبات التعقيد.
- أنشئ حسابًا جديدًا عن طريق تمرير عنوان البريد الإلكتروني وكلمة المرور الخاصين بالمستخدم الجديد إلى
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); });
تسجيل دخول مستخدم باستخدام عنوان بريد إلكتروني وكلمة مرور
تتشابه خطوات تسجيل دخول المستخدم باستخدام كلمة مرور مع خطوات إنشاء حساب جديد. في وظيفة تسجيل الدخول في تطبيقك، اتّبِع الخطوات التالية:
- عندما يسجّل المستخدم الدخول إلى تطبيقك، مرِّر عنوان البريد الإلكتروني وكلمة المرور إلى
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); });
- يمكنك أيضًا إنشاء بيانات الاعتماد وتسجيل الدخول مثل سير العمل الأخرى:
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)
الحد الأقصى لطول كلمة المرور (الحد الأقصى للطول هو 4,096 حرفًا)
يمكنك تفعيل فرض سياسة كلمات المرور في وضعَين:
مطلوب: تتعذّر محاولات الاشتراك إلى أن يغيّر المستخدم كلمة المرور إلى كلمة تتوافق مع سياستك.
الإعلام: يُسمح للمستخدمين بالاشتراك باستخدام كلمة مرور لا تستوفي المتطلبات. عند استخدام هذا الوضع، عليك التحقّق مما إذا كانت كلمة مرور المستخدم تتوافق مع السياسة على مستوى العميل، وأن تطلب من المستخدم بطريقة ما تعديل كلمة المرور إذا لم تكن متوافقة.
يجب دائمًا أن يختار المستخدمون الجدد كلمة مرور تتوافق مع سياستك.
إذا كان لديك مستخدمون نشطون، ننصحك بعدم تفعيل خيار "فرض الترقية عند تسجيل الدخول" إلا إذا كنت تنوي حظر وصول المستخدمين الذين لا تتوافق كلمات المرور الخاصة بهم مع سياستك. بدلاً من ذلك، استخدِم وضع الإشعار الذي يتيح للمستخدمين تسجيل الدخول باستخدام كلمات المرور الحالية وإبلاغهم بالمتطلبات التي لا تستوفيها كلمات المرور.
ننصحك بتفعيل ميزة "الحماية من تعداد عناوين البريد الإلكتروني"
تُظهر بعض طرق 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();