ابدأ باستخدام مصادقة Firebase على أنظمة تشغيل Apple

يمكنك استخدام مصادقة Firebase للسماح للمستخدمين بتسجيل الدخول إلى تطبيقك باستخدام طريقة أو أكثر من طرق تسجيل الدخول ، بما في ذلك عنوان البريد الإلكتروني وتسجيل الدخول بكلمة المرور وموفري الهوية الموحدة مثل تسجيل الدخول إلى Google وتسجيل الدخول إلى Facebook. يساعدك هذا البرنامج التعليمي على بدء استخدام Firebase Authentication من خلال توضيح كيفية إضافة عنوان البريد الإلكتروني وكلمة المرور لتسجيل الدخول إلى تطبيقك.

اربط تطبيقك بـ Firebase

  1. ثبّت حزمة Firebase SDK .
  2. في وحدة تحكم Firebase ، أضف تطبيقك إلى مشروع Firebase.

أضف مصادقة Firebase إلى تطبيقك

استخدم Swift Package Manager لتثبيت وإدارة تبعيات Firebase.

  1. في Xcode ، مع فتح مشروع التطبيق الخاص بك ، انتقل إلى ملف> إضافة حزم .
  2. عند المطالبة ، أضف مستودع SDK لأنظمة Apple الأساسية لـ Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. اختر مكتبة مصادقة Firebase.
  5. عند الانتهاء ، سيبدأ Xcode تلقائيًا في حل وتنزيل التبعيات الخاصة بك في الخلفية.

(اختياري) النموذج الأولي والاختبار باستخدام Firebase Local Emulator Suite

قبل التحدث عن كيفية مصادقة التطبيق الخاص بك على المستخدمين ، دعنا نقدم مجموعة من الأدوات التي يمكنك استخدامها لنموذج أولي واختبار وظائف المصادقة: Firebase Local Emulator Suite. إذا كنت تختار بين تقنيات وموفري المصادقة ، فإن تجربة نماذج بيانات مختلفة مع بيانات عامة وخاصة باستخدام قواعد المصادقة وأمن Firebase ، أو تصميم نماذج أولية لواجهة المستخدم لتسجيل الدخول ، فإن القدرة على العمل محليًا دون نشر الخدمات المباشرة يمكن أن تكون فكرة رائعة .

يعد محاكي المصادقة جزءًا من Local Emulator Suite ، والذي يمكّن تطبيقك من التفاعل مع محتوى قاعدة البيانات التي تمت محاكاتها وتكوينها ، بالإضافة إلى موارد المشروع التي تمت محاكاتها اختياريًا (الوظائف وقواعد البيانات الأخرى وقواعد الأمان).

يتضمن استخدام محاكي المصادقة بضع خطوات فقط:

  1. إضافة سطر من التعليمات البرمجية إلى التكوين التجريبي لتطبيقك للاتصال بالمحاكي.
  2. من جذر دليل المشروع المحلي ، قم بتشغيل firebase emulators:start .
  3. استخدام Local Emulator Suite UI للنماذج الأولية التفاعلية ، أو محاكي المصادقة REST API للاختبار غير التفاعلي.

يتوفر دليل مفصل في Connect your app to Authentication emulator . لمزيد من المعلومات ، راجع مقدمة Local Emulator Suite .

الآن دعنا نستمر في كيفية مصادقة المستخدمين.

قم بتهيئة Firebase SDK

في مفوض التطبيق ، قم أولاً باستيراد Firebase SDK:

سويفت

import FirebaseCore

ج موضوعية

@import FirebaseCore;

ثم ، في application:didFinishLaunchingWithOptions: method ، قم بتهيئة كائن FirebaseApp :

سويفت

// Use Firebase library to configure APIs
FirebaseApp.configure()

ج موضوعية

// Use Firebase library to configure APIs
[FIRApp configure];

استمع لحالة المصادقة

لكل من طرق عرض تطبيقك التي تحتاج إلى معلومات حول المستخدم الذي قام بتسجيل الدخول ، قم بإرفاق مستمع لكائن FIRAuth . يتم استدعاء هذا المستمع متى تغيرت حالة تسجيل دخول المستخدم.

أرفق المستمع في طريقة viewWillAppear الخاصة بوحدة التحكم في العرض:

سويفت

handle = Auth.auth().addStateDidChangeListener { auth, user in
  // ...
}

ج موضوعية

self.handle = [[FIRAuth auth]
    addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
      // ...
    }];

وفصل المستمع في طريقة viewWillDisappear لوحدة التحكم العرض:

سويفت

Auth.auth().removeStateDidChangeListener(handle!)

ج موضوعية

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

تسجيل مستخدمين جدد

أنشئ نموذجًا يسمح للمستخدمين الجدد بالتسجيل في تطبيقك باستخدام عنوان بريدهم الإلكتروني وكلمة مرور. عندما يكمل المستخدم النموذج ، تحقق من صحة عنوان البريد الإلكتروني وكلمة المرور اللذين قدمهما المستخدم ، ثم مررهما إلى طريقة createUser :

سويفت

Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
  // ...
}

ج موضوعية

[[FIRAuth auth] createUserWithEmail:email
                           password:password
                         completion:^(FIRAuthDataResult * _Nullable authResult,
                                      NSError * _Nullable error) {
  // ...
}];

تسجيل دخول المستخدمين الحاليين

أنشئ نموذجًا يسمح للمستخدمين الحاليين بتسجيل الدخول باستخدام عنوان بريدهم الإلكتروني وكلمة المرور. عندما يكمل المستخدم النموذج ، اتصل بطريقة signIn :

سويفت

Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
  guard let strongSelf = self else { return }
  // ...
}

ج موضوعية

[[FIRAuth auth] signInWithEmail:self->_emailField.text
                       password:self->_passwordField.text
                     completion:^(FIRAuthDataResult * _Nullable authResult,
                                  NSError * _Nullable error) {
  // ...
}];

احصل على معلومات المستخدم

بعد أن يقوم المستخدم بتسجيل الدخول بنجاح ، يمكنك الحصول على معلومات حول المستخدم. على سبيل المثال ، في مستمع حالة المصادقة الخاص بك:

سويفت

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 += " "
  }
  // ...
}

ج موضوعية

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;
  // ...
}

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

تعرف على كيفية إضافة دعم لموفري الهوية الآخرين وحسابات الضيوف المجهولة: