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

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

قبل البدء

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

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

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

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