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

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

قبل البدء

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

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

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

عندما يستخدم مستخدم سجّل خروجه ميزة في التطبيق تتطلّب المصادقة مع 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. استدعِ طريقة 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 Authentication with Identity Platform، يمكنك تفعيل التنظيف التلقائي في وحدة تحكّم Firebase. عند تفعيل هذه الميزة، تسمح لمنصة Firebase بحذف الحسابات المجهولة التي مرّ عليها أكثر من 30 يومًا تلقائيًا. في المشاريع التي تم تفعيل التنظيف التلقائي فيها ، لن يتم احتساب المصادقة المجهولة ضمن حدود الاستخدام أو حصص الفوترة.

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

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

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

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