يمكنك استخدام Firebase Authentication للسماح للمستخدمين بتسجيل الدخول إلى تطبيقك باستخدام طريقة واحدة أو أكثر من طرق تسجيل الدخول، بما في ذلك تسجيل الدخول باستخدام عنوان البريد الإلكتروني وكلمة المرور، و مزوّدي خدمات الهوية المُدمجة، مثل "تسجيل الدخول باستخدام حساب Google" و"تسجيل الدخول باستخدام حساب Facebook". يساعدك هذا البرنامج التعليمي في بدء استخدام Firebase Authentication من خلال توضيح كيفية إضافة عنوان البريد الإلكتروني وكلمة المرور لتسجيل الدخول إلى تطبيقك.
ربط تطبيقك بمنصّة Firebase
- ثبِّت حزمة تطوير البرامج (SDK) لمنصّة Firebase.
- في وحدة تحكُّم Firebase، أضِف تطبيقك إلى مشروعك على Firebase.
إضافة Firebase Authentication إلى تطبيقك
استخدِم أداة Swift Package Manager لتثبيت تبعيات Firebase وإدارتها.
- في Xcode، بعد فتح مشروع تطبيقك، انتقِل إلى File > Add Packages (ملف > إضافة حِزم).
- أضِف مستودع حزمة تطوير البرامج (SDK) لمنصّات Firebase Apple عندما يُطلب منك ذلك:
- اختَر مكتبة Firebase Authentication.
- أضِف العلامة
-ObjC
إلى قسم رموز ربط أخرى في إعدادات الإنشاء الخاصة بالهدف. - عند الانتهاء، سيبدأ 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 لإنشاء نماذج أولية تفاعلية أو استخدام واجهة برمجة التطبيقات لمحاكي Authentication في REST لأغراض الاختبارات غير التفاعلية
يتوفّر دليل تفصيلي في مقالة ربط تطبيقك بمحاكي Authentication. لمزيد من المعلومات، يمكنك الاطّلاع على مقدمة Local Emulator Suite.
لننتقل الآن إلى كيفية مصادقة المستخدمين.
إعداد حزمة تطوير البرامج (SDK) لمنصّة Firebase
في رمز التفويض الخاص بالتطبيق، استورِد أولاً حزمة تطوير البرامج (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
- تسجيل الدخول إلى Twitter
- تسجيل الدخول إلى GitHub
- تسجيل الدخول مع إخفاء الهوية