بدء مصادقة Firebase على أنظمة Apple الأساسية

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

ربط تطبيقك بمنصة Firebase

  1. ثبِّت حزمة تطوير البرامج (SDK) لمنصة Firebase.
  2. في وحدة تحكّم Firebaseconsole، أضِف تطبيقك إلى مشروع Firebase.

إضافة Firebase Authentication إلى تطبيقك

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

  1. في Xcode، افتح مشروع تطبيقك وانتقِل إلى ملف > إضافة حِزم.
  2. عندما يُطلب منك ذلك، أضِف مستودع حزمة تطوير البرامج (SDK) لمنصة Firebase على منصات Apple:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. اختَر مكتبة Firebase Authentication.
  5. أضِف العلامة -ObjC إلى قسم علامات الرابط الأخرى في إعدادات الإصدار للهدف.
  6. بعد الانتهاء، سيبدأ Xcode تلقائيًا في حلّ التبعيات وتنزيلها في الخلفية.

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

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

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

لا يتطلّب استخدام محاكي Authentication سوى بضع خطوات:

  1. إضافة سطر من الرمز البرمجي إلى إعدادات الاختبار في تطبيقك للاتصال بالمحاكي
  2. تشغيل firebase emulators:start من جذر دليل مشروع على جهاز المستخدم المحلي
  3. استخدام واجهة المستخدم 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;
  // ...
}

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

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