المصادقة مع Firebase باستخدام حسابات مستندة إلى كلمة المرور على أنظمة Apple الأساسية

يمكنك استخدام مصادقة Firebase للسماح للمستخدمين بالمصادقة مع تستخدم منصة Firebase عناوين البريد الإلكتروني وكلمات المرور، وإدارة التطبيقات. حسابات مستندة إلى كلمة المرور.

قبل البدء

يمكنك استخدام "مدير حزم Swift" لتثبيت اعتماديات Firebase وإدارتها.

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

بعد ذلك، نفِّذ بعض خطوات الضبط:

  1. إذا لم تكن قد ربطت تطبيقك بمشروعك على Firebase، يمكنك إجراء ذلك من وحدة تحكُّم Firebase.
  2. تفعيل تسجيل الدخول باستخدام البريد الإلكتروني/كلمة المرور:
    1. في وحدة تحكُّم Firebase، افتح قسم المصادقة.
    2. في علامة التبويب طريقة تسجيل الدخول، فعِّل تسجيل الدخول البريد الإلكتروني/كلمة المرور. وانقر على حفظ.

إنشاء حساب مستنِد إلى كلمة المرور

لإنشاء حساب مستخدم جديد باستخدام كلمة مرور، أكمل الخطوات التالية في نشاط تسجيل الدخول إلى تطبيقك:

  1. استيراد وحدة FirebaseCore في UIApplicationDelegate بالإضافة إلى أي تطبيق آخر وحدات Firebase التي يستخدمها تطبيقك المفوَّض على سبيل المثال، لاستخدام Cloud Firestore والمصادقة:

    واجهة المستخدم

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. ضبط FirebaseApp المثيل المشترك في حساب مفوَّض تطبيقك طريقة application(_:didFinishLaunchingWithOptions:):

    واجهة المستخدم

    // 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];
  3. إذا كنت تستخدم SwiftUI، عليك إنشاء تفويض تطبيق وإرفاقه. إلى بنية App عبر UIApplicationDelegateAdaptor أو NSApplicationDelegateAdaptor ويجب أيضًا إيقاف إيماءة تفويض التطبيق. بالنسبة لمزيد من المعلومات، يُرجى الاطّلاع على تعليمات SwiftUI.

    واجهة المستخدم

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. عندما يشترك مستخدم جديد باستخدام نموذج الاشتراك في تطبيقك، أكمِل أي نموذج جديد. خطوات تأكيد الحساب التي يتطلبها تطبيقك، مثل التحقق من أنّ تمّت كتابة كلمة المرور الخاصة بالحساب الجديد بشكل صحيح وبما أنّها تستوفي تعقيدك متطلبات المشروع.
  5. إنشاء حساب جديد من خلال إدخال عنوان البريد الإلكتروني وكلمة المرور للمستخدم الجديد إلى 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) {
      // ...
    }];
    إذا تم إنشاء الحساب الجديد بنجاح، يتم تسجيل دخول المستخدم، ثم الحصول على بيانات حساب المستخدم من كائن النتيجة الذي تم تمريره إلى .

تسجيل دخول مستخدم باستخدام عنوان بريد إلكتروني وكلمة مرور

تتشابه خطوات تسجيل دخول المستخدم باستخدام كلمة مرور مع خطوات إنشاء حساب جديد. في نشاط تسجيل الدخول إلى تطبيقك، نفِّذ ما يلي:

  1. استيراد وحدة FirebaseCore في UIApplicationDelegate بالإضافة إلى أي تطبيق آخر وحدات Firebase التي يستخدمها تطبيقك المفوَّض على سبيل المثال، لاستخدام Cloud Firestore والمصادقة:

    واجهة المستخدم

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. ضبط FirebaseApp المثيل المشترك في حساب مفوَّض تطبيقك طريقة application(_:didFinishLaunchingWithOptions:):

    واجهة المستخدم

    // 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];
  3. إذا كنت تستخدم SwiftUI، عليك إنشاء تفويض تطبيق وإرفاقه. إلى بنية App عبر UIApplicationDelegateAdaptor أو NSApplicationDelegateAdaptor ويجب أيضًا إيقاف إيماءة تفويض التطبيق. بالنسبة لمزيد من المعلومات، يُرجى الاطّلاع على تعليمات SwiftUI.

    واجهة المستخدم

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. عندما يسجّل أحد المستخدمين الدخول إلى تطبيقك، أدخِل عنوان بريده الإلكتروني كلمة المرور إلى 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 التي تستخدم عناوين البريد الإلكتروني لعرض المعلمات أخطاء محددة إذا كان عنوان البريد الإلكتروني غير مسجَّل عندما يجب تسجيله (على سبيل المثال، عند تسجيل الدخول باستخدام عنوان بريد إلكتروني وكلمة مرور)، أو المسجَّل عندما يجب عدم استخدامه (على سبيل المثال، عند تغيير عنوان البريد الإلكتروني لمستخدم). وفي حين أن هذا قد يكون مفيدًا في اقتراح حلول انتصاف محددة على المستخدمين، إلا أنه يمكنه أيضًا إساءة استخدام من قِبل جهات ضارة لاكتشاف عناوين البريد الإلكتروني المسجّلة بواسطة المستخدمين.

للتخفيف من هذه الخطر، ننصحك بتفعيل الحماية من تعداد البريد الإلكتروني. لمشروعك باستخدام أداة gcloud في Google Cloud. لاحظ أن تفعيل هذا تغيير في سلوك إعداد تقارير الأخطاء في مصادقة Firebase: تأكد من تطبيقك لا يعتمد على الأخطاء الأكثر تحديدًا.

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

بعد تسجيل المستخدم الدخول لأول مرة، يتم إنشاء حساب مستخدم جديد المرتبطة ببيانات الاعتماد - أي اسم المستخدم وكلمة المرور، أو الرقم أو معلومات مقدم المصادقة - المستخدم الذي سجّل الدخول باستخدامه. هذا الجديد كجزء من مشروع Firebase، ويمكن استخدامه لتحديد مستخدم في كل تطبيق في مشروعك، بغض النظر عن كيفية تسجيل دخوله.

  • في تطبيقاتك، يمكنك الحصول على معلومات الملف الشخصي الأساسية للمستخدم من User . راجع إدارة المستخدمين.

  • في "قاعدة بيانات Firebase في الوقت الفعلي" و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;
}

قد تحتاج أيضًا إلى إضافة رمز معالجة الأخطاء للنطاق الكامل للمصادقة الأخطاء. يُرجى الاطّلاع على التعامل مع الأخطاء.