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

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

قبل البدء

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

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

المصادقة باستخدام Firebase بهوية مجهولة

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

  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. عليك استدعاء طريقة signInAnonymouslyWithCompletion::

    Swift

    Auth.auth().signInAnonymously { authResult, error in
      // ...
    }
    

    Objective-C

    [[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,
                                                      NSError * _Nullable error) {
       // ...
     }];
    
  5. في حال اكتمال طريقة signInAnonymouslyWithCompletion: بدون خطأ، يمكنك الحصول على بيانات حساب المستخدم المجهول من العنصر FIRAuthDataResult:

    Swift

    guard let user = authResult?.user else { return }
    let isAnonymous = user.isAnonymous  // true
    let uid = user.uid
    

    Objective-C

    FIRUser *user = authResult.user;
    BOOL isAnonymous = user.anonymous;  // YES
    NSString *uid = user.uid;
    

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

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

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

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

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

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

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

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

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

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

الخطوات اللاحقة

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