يمكنك استخدام Firebase Authentication للسماح للمستخدمين بتسجيل الدخول إلى تطبيقك باستخدام طريقة واحدة أو أكثر من طرق تسجيل الدخول، بما في ذلك تسجيل الدخول باستخدام عنوان البريد الإلكتروني وكلمة المرور، وموفّري الهوية الموحّدة، مثل "تسجيل الدخول باستخدام حساب Google" و"تسجيل الدخول باستخدام Facebook". يساعدك هذا البرنامج التعليمي في بدء استخدام Firebase Authentication من خلال توضيح كيفية إضافة عنوان البريد الإلكتروني وكلمة المرور لتسجيل الدخول إلى تطبيقك.
ربط تطبيقك بمنصّة Firebase
- ثبِّت حزمة تطوير البرامج (SDK) لمنصة Firebase.
- في وحدة تحكّم Firebase، أضِف تطبيقك إلى مشروعك على Firebase.
إضافة Firebase Authentication إلى تطبيقك
استخدِم Swift Package Manager لتثبيت تبعيات Firebase وإدارتها.
- في Xcode، افتح مشروع تطبيقك، ثم انتقِل إلى ملف > إضافة حِزم (File > Add Packages).
- عندما يُطلب منك ذلك، أضِف مستودع حزمة تطوير البرامج (SDK) لمنصات Apple في Firebase:
- اختَر مكتبة "Firebase Authentication".
- أضِف العلامة
-ObjCإلى قسم علامات الربط الأخرى (Other Linker Flags) في إعدادات إنشاء الهدف. - بعد الانتهاء، سيبدأ Xcode تلقائيًا في حلّ التبعيات وتنزيلها في الخلفية.
https://github.com/firebase/firebase-ios-sdk.git
(اختياري) إنشاء نموذج أوّلي واختباره باستخدام Firebase Local Emulator Suite
قبل الحديث عن كيفية مصادقة تطبيقك للمستخدمين، دعنا نقدّم مجموعة من الأدوات التي يمكنك استخدامها لإنشاء نماذج أولية واختبار وظائف Authentication: Firebase Local Emulator Suite. إذا كنت بصدد الاختيار بين تقنيات ومقدّمي خدمات المصادقة، أو تجربة نماذج بيانات مختلفة مع بيانات عامة وخاصة باستخدام Authentication وFirebase Security Rules، أو إنشاء نماذج أولية لتصاميم واجهة المستخدم لتسجيل الدخول، فإنّ العمل على الجهاز بدون نشر الخدمات المباشرة يمكن أن يكون فكرة رائعة.
يُعدّ محاكي Authentication جزءًا من Local Emulator Suite، وهو يتيح لتطبيقك التفاعل مع محتوى قاعدة البيانات التي تمت محاكاتها وإعداداتها، بالإضافة إلى موارد مشروعك التي تمت محاكاتها (الدوال وقواعد البيانات الأخرى وقواعد الأمان) بشكل اختياري.
يتطلّب استخدام محاكي Authentication بضع خطوات فقط:
- إضافة سطر من الرموز إلى إعدادات اختبار تطبيقك للاتصال بالمحاكي
- من جذر دليل مشروعك على جهاز المستخدم، نفِّذ الأمر
firebase emulators:start. - استخدام واجهة مستخدم Local Emulator Suite لإنشاء النماذج الأولية التفاعلية، أو واجهة برمجة تطبيقات REST لمحاكي Authentication لإجراء الاختبارات غير التفاعلية
يتوفّر دليل مفصّل في مقالة ربط تطبيقك بمحاكي Authentication. لمزيد من المعلومات، يُرجى الاطّلاع على مقدّمة عن Local Emulator Suite.
والآن، لننتقل إلى كيفية مصادقة المستخدمين.
إعداد حزمة Firebase SDK
في مفوَّض تطبيقك، استورِد أولاً حزمة تطوير البرامج (SDK) لمنصة Firebase:
Swift
import FirebaseCore
Objective-C
@import FirebaseCore;
بعد ذلك، في الإجراء application:didFinishLaunchingWithOptions:، عليك إعداد العنصر
FirebaseApp:
Swift
// Use Firebase library to configure APIs
FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs
[FIRApp configure];
الاستماع إلى حالة المصادقة
لكل طريقة عرض في تطبيقك تحتاج إلى معلومات عن المستخدم الذي سجّل الدخول،
يجب إرفاق مستمع إلى العنصر FIRAuth. يتم استدعاء هذا المستمع عندما
تتغير حالة تسجيل دخول المستخدم.
أضِف المستمع في طريقة viewWillAppear لوحدة التحكّم في العرض:
Swift
handle = Auth.auth().addStateDidChangeListener { auth, user in
// ...
}
Objective-C
self.handle = [[FIRAuth auth]
addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
// ...
}];
وفصل المستمع في إجراء viewWillDisappear الخاص بوحدة التحكّم في العرض:
Swift
Auth.auth().removeStateDidChangeListener(handle!)
Objective-C
[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];
تسجيل مستخدمين جدد
أنشئ نموذجًا يسمح للمستخدمين الجدد بالتسجيل في تطبيقك باستخدام عنوان بريدهم الإلكتروني وكلمة مرور. عندما يكمل المستخدم النموذج، عليك التحقّق من صحة عنوان البريد الإلكتروني
وكلمة المرور اللذين قدّمهما المستخدم، ثم تمريرهما إلى الطريقة 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) {
// ...
}];
تسجيل دخول المستخدمين الحاليين
أنشئ نموذجًا يسمح للمستخدمين الحاليين بتسجيل الدخول باستخدام عنوان البريد الإلكتروني
وكلمة المرور. عندما يكمل المستخدم النموذج، يمكنك استدعاء طريقة 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) {
// ...
}];
الحصول على معلومات المستخدم
بعد أن يسجّل المستخدم الدخول بنجاح، يمكنك الحصول على معلومات عنه. على سبيل المثال، في أداة الاستماع إلى حالة المصادقة:
Swift
if let user = user {
// 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 getTokenWithCompletion:completion: instead.
let uid = user.uid
let email = user.email
let photoURL = user.photoURL
var multiFactorString = "MultiFactor: "
for info in user.multiFactor.enrolledFactors {
multiFactorString += info.displayName ?? "[DispayName]"
multiFactorString += " "
}
// ...
}
Objective-C
if (user) {
// 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 getTokenWithCompletion:completion: instead.
NSString *email = user.email;
NSString *uid = user.uid;
NSMutableString *multiFactorString = [NSMutableString stringWithFormat:@"MultiFactor: "];
for (FIRMultiFactorInfo *info in user.multiFactor.enrolledFactors) {
[multiFactorString appendString:info.displayName];
[multiFactorString appendString:@" "];
}
NSURL *photoURL = user.photoURL;
// ...
}
الخطوات التالية
تعرَّف على كيفية إضافة دعم لموفّري الهوية الآخرين وحسابات الضيوف المجهولين:
- تسجيل الدخول باستخدام حساب Google
- Facebook Login
- تسجيل الدخول باستخدام Twitter
- تسجيل الدخول إلى GitHub
- تسجيل الدخول مع إخفاء الهوية