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

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

قبل البدء

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

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

المصادقة مع Firebase بشكل مجهول

عندما يستخدم مستخدم مسجَّل الخروج ميزة في التطبيق تتطلّب المصادقة باستخدام Firebase، سجِّل دخول المستخدم بشكل مجهول من خلال إكمال الخطوات التالية:

  1. استورِد وحدة FirebaseCore في UIApplicationDelegate، بالإضافة إلى أي وحدات Firebase أخرى يستخدمها مفوّض تطبيقك. على سبيل المثال، لاستخدام Cloud Firestore وAuthentication:
    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          
    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. يمكنك ضبط مثيل مشترَك لملف FirebaseApp في طريقة application(_:didFinishLaunchingWithOptions:) لمفوّض التطبيق باتّباع الخطوات التالية:
    // 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. استدعاء طريقة signInAnonymouslyWithCompletion::
    SwiftObjective-C
    Auth.auth().signInAnonymously { authResult, error in
      // ...
    }
    [[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,
                                                      NSError * _Nullable error) {
       // ...
     }];
  5. إذا اكتملت طريقة signInAnonymouslyWithCompletion: بدون خطأ، يمكنك الحصول على بيانات حساب المستخدم المجهول من عنصر FIRAuthDataResult:
    SwiftObjective-C
    guard let user = authResult?.user else { return }
    let isAnonymous = user.isAnonymous  // true
    let uid = user.uid
    FIRUser *user = authResult.user;
    BOOL isAnonymous = user.anonymous;  // YES
    NSString *uid = user.uid;

تحويل حساب مجهول إلى حساب دائم

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

  1. عندما يشترك المستخدم، أكمِل عملية تسجيل الدخول لمقدّم المصادقة للمستخدم إلى أن تصل إلى استدعاء إحدى methods FIRAuth.signInWith، ولكن بدون تضمين ذلك. على سبيل المثال، يمكنك الحصول على رمز تعريف المستخدم على Google، رمز الوصول إلى Facebook، أو عنوان البريد الإلكتروني وكلمة المرور.
  2. الحصول على FIRAuthCredential لموفِّر المصادقة الجديد:

    تسجيل الدخول بحساب Google
    SwiftObjective-C
    guard
      let authentication = user?.authentication,
      let idToken = authentication.idToken
    else {
      return
    }
    
    let credential = GoogleAuthProvider.credential(withIDToken: idToken,
                                                   accessToken: authentication.accessToken)
    FIRAuthCredential *credential =
    [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString
                                     accessToken:result.user.accessToken.tokenString];
    تسجيل الدخول باستخدام حساب Facebook
    SwiftObjective-C
    let credential = FacebookAuthProvider
      .credential(withAccessToken: AccessToken.current!.tokenString)
    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
    تسجيل الدخول باستخدام عنوان البريد الإلكتروني وكلمة المرور
    SwiftObjective-C
    let credential = EmailAuthProvider.credential(withEmail: email, password: password)
    FIRAuthCredential *credential =
        [FIREmailAuthProvider credentialWithEmail:email
                                                 password:password];
  3. نقْل عنصر FIRAuthCredential إلى linkWithCredential:completion: مستخدم تسجيل الدخول:

    SwiftObjective-C
        user.link(with: credential) { authResult, error in
      // ...
    }
    }
        [[FIRAuth auth].currentUser linkWithCredential:credential
        completion:^(FIRAuthDataResult *result, NSError *_Nullable error) {
      // ...
    }];

في حال نجاح طلب linkWithCredential:completion:، يمكن لحساب المستخدم الجديد الوصول إلى بيانات Firebase للحساب المجهول الهوية.

التنظيف التلقائي

إذا كنت قد أجريت ترقية لمشروعك إلى Firebase Authentication with Identity Platform، يمكنك تفعيل ميزة "التنظيف التلقائي" في وحدة تحكّم Firebase. عند تفعيل هذه الميزة، أنت تسمح لـ Firebase بحذف الحسابات المجهولة الهوية التي مرّ عليها أكثر من 30 يومًا تلقائيًا. في المشاريع التي تم فيها تفعيل ميزة التنظيف التلقائي، لن يتم احتساب المصادقة المجهولة ضمن حدود الاستخدام أو حصص الفوترة.

  • قد يتم تلقائيًا حذف أي حسابات مجهولة الهوية تم إنشاؤها بعد تفعيل ميزة "التنظيف التلقائي" في أي وقت بعد 30 يومًا من إنشائها.
  • ستكون الحسابات المجهولة الحالية مؤهّلة للحذف التلقائي بعد 30 يومًا من تفعيل ميزة "التنظيف التلقائي".
  • في حال إيقاف ميزة "التنظيف التلقائي"، ستبقى أي حسابات مجهولة الهوية مُجدوَلة للحذف.
  • في حال "ترقية" حساب مجهول الهوية من خلال ربطه بأي طريقة تسجيل دخول، لن يتم حذف الحساب تلقائيًا.

إذا كنت تريد معرفة عدد المستخدمين الذين سيتأثرون بهذه الميزة قبل تفعيلها، وكنت قد صعّدت مشروعك إلى Firebase Authentication with Identity Platform، يمكنك الفلترة حسب is_anon في تسجيل السحابة الإلكترونية.

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

والآن بعد أن أصبح بإمكان المستخدمين المصادقة باستخدام Firebase، يمكنك التحكّم في إمكانية وصولهم إلى البيانات في قاعدة بيانات Firebase باستخدام قواعد Firebase.