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

يمكنك دمج Firebase Authentication مع نظام مصادقة مخصّص من خلال تعديل خادم المصادقة لإنتاج رموز مميّزة موقَّعة ومخصّصة عندما يختار المستخدم بنجاح. يتلقّى تطبيقك هذا الرمز المميّز ويستخدمه للمصادقة. من خلال Firebase.

قبل البدء

  1. إنشاء مشروع على Firebase وتسجيل تطبيقك إذا لم تكن قد قمت بذلك بالفعل.
  2. يمكنك استخدام "مدير حزم Swift" لتثبيت اعتماديات Firebase وإدارتها.

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

المصادقة باستخدام Firebase

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

    SwiftUI

    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:):

    SwiftUI

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

    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. بعد استلام الرمز المميّز المخصّص من خادم المصادقة، مرِّره إلى signInWithCustomToken لتسجيل دخول المستخدم:

    Swift

    Auth.auth().signIn(withCustomToken: customToken ?? "") { user, error in
      // ...
    }

    Objective-C

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

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

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

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

  • في Firebase Realtime Database و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;
}

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