يمكنك استخدام Firebase Authentication للسماح للمستخدمين بالمصادقة باستخدام Firebase من خلال عناوين بريدهم الإلكتروني وكلمات المرور، وإدارة الحسابات المستندة إلى كلمات المرور في تطبيقك.
قبل البدء
استخدِم Swift Package Manager لتثبيت التبعيات في Firebase وإدارتها.
- في Xcode، افتح مشروع تطبيقك وانتقِل إلى ملف > إضافة حِزم.
- عندما يُطلب منك ذلك، أضِف مستودع حزمة تطوير البرامج (SDK) لمنصات Firebase على Apple:
- اختَر مكتبة Firebase Authentication.
- أضِف العلامة
-ObjCإلى قسم علامات الرابط الأخرى في إعدادات الإصدار للهدف. - بعد الانتهاء، سيبدأ Xcode تلقائيًا في حلّ التبعيات وتنزيلها في الخلفية.
https://github.com/firebase/firebase-ios-sdk.git
بعد ذلك، اتّبِع بعض خطوات الضبط:
- إذا لم يسبق لك ربط تطبيقك بمشروعك على Firebase، يمكنك إجراء ذلك من وحدة تحكّم Firebase.
- فعِّل ميزة تسجيل الدخول باستخدام البريد الإلكتروني وكلمة المرور:
- في وحدة تحكّم FirebaseFirebase، افتح قسم المصادقة.
- في علامة التبويب طريقة تسجيل الدخول ، فعِّل طريقة تسجيل الدخول البريد الإلكتروني/كلمة المرور وانقر على حفظ.
إنشاء حساب مستند إلى كلمة مرور
لإنشاء حساب مستخدم جديد بكلمة مرور، أكمل الخطوات التالية في نشاط تسجيل الدخول في تطبيقك:
- استورِد الو0/ الوحدة في101 1/، بالإضافة إلى أي101 2وحدات Firebase3/ أخرى يستخدمها مفوّض تطبيقك.
FirebaseCoreUIApplicationDelegateعلى سبيل المثال، لاستخدام Cloud Firestore وAuthentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- اضبط مثيلاً مشتركًا في طريقة
application(_:didFinishLaunchingWithOptions:)لمفوّض تطبيقك:FirebaseAppSwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- إذا كنت تستخدم SwiftUI، عليك إنشاء مفوّض تطبيق وإرفاقه
ببنية
Appمن خلالUIApplicationDelegateAdaptorأوNSApplicationDelegateAdaptor. عليك أيضًا إيقاف عملية تبديل طريقة عمل مفوّض التطبيق. لمزيد من المعلومات، اطّلِع على تعليمات SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- عندما يشترك مستخدم جديد باستخدام نموذج الاشتراك في تطبيقك، أكمل أي خطوات جديدة للتحقق من صحة الحساب يتطلبها تطبيقك، مثل التأكد من كتابة كلمة المرور الجديدة بشكل صحيح واستيفائها متطلبات التعقيد.
- أنشئ حسابًا جديدًا عن طريق تمرير عنوان البريد الإلكتروني وكلمة المرور للمستخدم الجديد
إلى
createUser.إذا تم إنشاء الحساب الجديد بنجاح، يتم تسجيل دخول المستخدم، ويمكنك الحصول على بيانات حساب المستخدم من عنصر النتيجة الذي يتم تمريره إلى طريقة رد الاتصال.Swift
Auth.auth().createUser(withEmail: email, password: password) { authResult, error in // ... }
Objective-C
[[FIRAuth auth] createUserWithEmail:email password:password completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
تسجيل دخول مستخدم باستخدام عنوان بريد إلكتروني وكلمة مرور
تشبه خطوات تسجيل دخول مستخدم بكلمة مرور خطوات إنشاء حساب جديد. في نشاط تسجيل الدخول في تطبيقك، اتّبِع الخطوات التالية:
- استورِد الو0/ الوحدة في101 1/، بالإضافة إلى أي101 2وحدات Firebase3/ أخرى يستخدمها مفوّض تطبيقك.
FirebaseCoreUIApplicationDelegateعلى سبيل المثال، لاستخدام Cloud Firestore وAuthentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- اضبط مثيلاً مشتركًا في طريقة
application(_:didFinishLaunchingWithOptions:)لمفوّض تطبيقك:FirebaseAppSwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- إذا كنت تستخدم SwiftUI، عليك إنشاء مفوّض تطبيق وإرفاقه
ببنية
Appمن خلالUIApplicationDelegateAdaptorأوNSApplicationDelegateAdaptor. عليك أيضًا إيقاف عملية تبديل طريقة عمل مفوّض التطبيق. لمزيد من المعلومات، اطّلِع على تعليمات SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- عندما يسجّل مستخدم الدخول إلى تطبيقك، مرِّر عنوان البريد الإلكتروني و
كلمة المرور للمستخدم إلى
signIn.إذا سجّل المستخدم الدخول بنجاح، يمكنك الحصول على بيانات حساب المستخدم من عنصر النتيجة الذي يتم تمريره إلى طريقة رد الاتصال.Swift
Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in guard let strongSelf = self else { return } // ... }
Objective-C
[[FIRAuth auth] signInWithEmail:self->_emailField.text password:self->_passwordField.text completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
ننصحك بما يلي: ضبط سياسة كلمات المرور
يمكنك تحسين أمان الحساب من خلال فرض متطلبات تعقيد كلمات المرور.
لضبط سياسة كلمات المرور لمشروعك، افتح علامة التبويب سياسة كلمات المرور في صفحة "إعدادات المصادقة" في وحدة تحكّم Firebase:
Firebase Authentication تتوافق سياسات كلمات المرور مع متطلبات كلمات المرور التالية:
يجب إدخال حرف صغير
يجب إدخال حرف كبير
يجب إدخال حرف رقمي
يجب إدخال حرف غير أبجدي رقمي
تستوفي الأحرف التالية متطلبات الأحرف غير الأبجدية الرقمية:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~الحد الأدنى لطول كلمة المرور (يتراوح بين 6 و30 حرفًا، والقيمة التلقائية هي 6)
الحد الأقصى لطول كلمة المرور (الحد الأقصى هو 4096 حرفًا)
يمكنك تفعيل فرض سياسة كلمات المرور في وضعَين:
مطلوب: تفشل محاولات الاشتراك إلى أن يغيّر المستخدم كلمة المرور إلى كلمة تستوفي متطلبات سياستك.
إشعار: يُسمح للمستخدمين بالاشتراك باستخدام كلمة مرور لا تستوفي متطلبات السياسة. عند استخدام هذا الوضع، عليك التحقق مما إذا كانت كلمة مرور المستخدم تستوفي متطلبات السياسة على جانب العميل، وأن تطلب من المستخدم بطريقة ما تعديل كلمة المرور إذا لم تكن تستوفي متطلبات السياسة.
يُطلب من المستخدمين الجدد دائمًا اختيار كلمة مرور تستوفي متطلبات سياستك.
إذا كان لديك مستخدمون نشطون، ننصحك بعدم تفعيل ميزة "فرض الترقية عند تسجيل الدخول" إلا إذا كنت تنوي حظر الوصول عن المستخدمين الذين لا تستوفي كلمات مرورهم متطلبات سياستك. بدلاً من ذلك، استخدِم وضع "الإشعار"، الذي يسمح للمستخدمين بتسجيل الدخول باستخدام كلمات المرور الحالية، وأبلِغهم بالمتطلبات التي لا تستوفيها كلمات المرور.
ننصحك بما يلي: تفعيل ميزة "الحماية من تعداد عناوين البريد الإلكتروني"
تُظهر بعض طرق Firebase Authentication التي تأخذ عناوين البريد الإلكتروني كمعلّمات أخطاء معيّنة إذا كان عنوان البريد الإلكتروني غير مسجّل عندما يجب أن يكون مسجّلاً (على سبيل المثال، عند تسجيل الدخول باستخدام عنوان بريد إلكتروني وكلمة مرور)، أو مسجّلاً عندما يجب أن يكون غير مستخدَم (على سبيل المثال، عند تغيير عنوان البريد الإلكتروني لمستخدم). على الرغم من أنّ ذلك قد يكون مفيدًا لاقتراح حلول معيّنة للمستخدمين، يمكن أيضًا أن يسيء استخدامه الجهات الضارة لاكتشاف عناوين البريد الإلكتروني التي سجّلها المستخدمون.
للحدّ من هذا الخطر، ننصحك بـ تفعيل ميزة "الحماية من تعداد عناوين البريد الإلكتروني"
لمشروعك باستخدام أداة gcloud من Google Cloud. يُرجى العِلم أنّ تفعيل هذه الميزة يغيّر سلوك الإبلاغ عن الأخطاء في Firebase Authentication، لذا تأكَّد من أنّ تطبيقك لا يعتمد على الأخطاء الأكثر تحديدًا.
الخطوات التالية
بعد أن يسجّل المستخدم الدخول لأول مرة، يتم إنشاء حساب مستخدم جديد وربطه ببيانات الاعتماد التي سجّل المستخدم الدخول بها، أي اسم المستخدم وكلمة المرور أو رقم الهاتف أو معلومات موفّر المصادقة. يتم تخزين هذا الحساب الجديد كجزء من مشروع Firebase، ويمكن استخدامه لتحديد هوية المستخدم في كل تطبيق في مشروعك، بغض النظر عن طريقة تسجيل الدخول.
-
في تطبيقاتك، يمكنك الحصول على معلومات الملف الشخصي الأساسية للمستخدم من عنصر
User. اطّلِع على إدارة المستخدمين. في Firebase Realtime Database وCloud Storage قواعد الأمان، يمكنك الحصول على رقم تعريف المستخدم الفريد للمستخدم الذي سجّل الدخول من متغيّر
auth، واستخدامه للتحكّم في البيانات التي يمكن للمستخدم الوصول إليها.
يمكنك السماح للمستخدمين بتسجيل الدخول إلى تطبيقك باستخدام عدّة موفّري مصادقة من خلال ربط بيانات اعتماد موفّر المصادقة بحساب مستخدم حالي.
لتسجيل خروج مستخدم، استخدِم
signOut:.
Swift
let firebaseAuth = Auth.auth() do { try firebaseAuth.signOut() } catch let signOutError as NSError { print("Error signing out: %@", signOutError) }
Objective-C
NSError *signOutError; BOOL status = [[FIRAuth auth] signOut:&signOutError]; if (!status) { NSLog(@"Error signing out: %@", signOutError); return; }
قد تحتاج أيضًا إلى إضافة رمز للتعامل مع الأخطاء من أجل النطاق الكامل لأخطاء المصادقة. اطّلِع على التعامل مع الأخطاء.