Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

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

قبل ان تبدأ

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

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

بعد ذلك ، قم بتنفيذ بعض خطوات التكوين:

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

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

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

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

    SwiftUI

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

    سويفت

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    ج موضوعية

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. قم بتهيئة مثيل FirebaseApp مشترك في application(_:didFinishLaunchingWithOptions:) :

    SwiftUI

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

    سويفت

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

    ج موضوعية

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. إذا كنت تستخدم SwiftUI ، فيجب عليك إنشاء مفوض للتطبيق وإرفاقه بهيكل App الخاص بك عبر UIApplicationDelegateAdaptor أو NSApplicationDelegateAdaptor . يجب عليك أيضًا تعطيل استخدام مفوض التطبيق. لمزيد من المعلومات ، راجع تعليمات SwiftUI .

    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 .

    سويفت

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

    ج موضوعية

    [[FIRAuth auth] createUserWithEmail:email
                               password:password
                             completion:^(FIRAuthDataResult * _Nullable authResult,
                                          NSError * _Nullable error) {
      // ...
    }];
    إذا تم إنشاء الحساب الجديد بنجاح ، فسيتم تسجيل دخول المستخدم ، ويمكنك الحصول على بيانات حساب المستخدم من كائن النتيجة الذي تم تمريره إلى طريقة رد الاتصال.

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

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

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

    SwiftUI

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

    سويفت

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    ج موضوعية

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. قم بتهيئة مثيل FirebaseApp مشترك في application(_:didFinishLaunchingWithOptions:) :

    SwiftUI

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

    سويفت

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

    ج موضوعية

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. إذا كنت تستخدم SwiftUI ، فيجب عليك إنشاء مفوض للتطبيق وإرفاقه بهيكل App الخاص بك عبر UIApplicationDelegateAdaptor أو NSApplicationDelegateAdaptor . يجب عليك أيضًا تعطيل استخدام مفوض التطبيق. لمزيد من المعلومات ، راجع تعليمات SwiftUI .

    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 .

    سويفت

    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) {
      // ...
    }];
    إذا نجح المستخدم في تسجيل الدخول ، يمكنك الحصول على بيانات حساب المستخدم من كائن النتيجة الذي تم تمريره إلى طريقة رد الاتصال.

موصى به: قم بتمكين حماية تعداد البريد الإلكتروني

تؤدي بعض طرق مصادقة Firebase التي تأخذ عناوين البريد الإلكتروني كمعلمات إلى أخطاء محددة إذا كان عنوان البريد الإلكتروني غير مسجَّل عندما يجب تسجيله (على سبيل المثال ، عند تسجيل الدخول باستخدام عنوان بريد إلكتروني وكلمة مرور) ، أو تسجيله عندما يجب أن يكون غير مستخدم (على سبيل المثال ، عند تغيير عنوان البريد الإلكتروني للمستخدم). في حين أن هذا يمكن أن يكون مفيدًا لاقتراح علاجات محددة للمستخدمين ، إلا أنه يمكن أيضًا إساءة استخدامه من قبل الجهات الضارة لاكتشاف عناوين البريد الإلكتروني المسجلة من قبل المستخدمين لديك.

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

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

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

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

  • في قاعدة بيانات Firebase Realtime وقواعد أمان التخزين السحابي ، يمكنك الحصول على معرف المستخدم الفريد للمستخدم الذي قام بتسجيل الدخول من متغير auth ، واستخدامه للتحكم في البيانات التي يمكن للمستخدم الوصول إليها.

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

لتسجيل خروج مستخدم ، اتصل signOut:

سويفت

let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print("Error signing out: %@", signOutError)
}

ج موضوعية

NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

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