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

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

قبل البدء

  1. يُرجى اتّباع الخطوات الواردة في دليل البدء، إذا لم يسبق لك فعل ذلك.

  2. تفعيل تسجيل الدخول مع إخفاء الهوية:

    • في قسم المصادقة ضمن "وحدة تحكُّم Firebase"، افتح صفحة طريقة تسجيل الدخول.
    • من صفحة طريقة تسجيل الدخول، فعِّل طريقة تسجيل الدخول مع إخفاء الهوية وانقر على حفظ.

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

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

try {
  final userCredential =
      await FirebaseAuth.instance.signInAnonymously();
  print("Signed in with temporary account.");
} on FirebaseAuthException catch (e) {
  switch (e.code) {
    case "operation-not-allowed":
      print("Anonymous auth hasn't been enabled for this project.");
      break;
    default:
      print("Unknown error.");
  }
}

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

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

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

  2. احصل على عنصر Credential لموفِّر المصادقة الجديد:

    // Google Sign-in
    final credential = GoogleAuthProvider.credential(idToken: idToken);
    
    // Email and password sign-in
    final credential =
        EmailAuthProvider.credential(email: emailAddress, password: password);
    
    // Etc.
    
  3. مرِّر الكائن Credential إلى طريقة linkWithCredential() الخاصة بالمستخدم الذي يسجّل دخوله:

    try {
      final userCredential = await FirebaseAuth.instance.currentUser
          ?.linkWithCredential(credential);
    } on FirebaseAuthException catch (e) {
      switch (e.code) {
        case "provider-already-linked":
          print("The provider has already been linked to the user.");
          break;
        case "invalid-credential":
          print("The provider's credential is not valid.");
          break;
        case "credential-already-in-use":
          print("The account corresponding to the credential already exists, "
              "or is already linked to a Firebase User.");
          break;
        // See the API reference for the full list of error codes.
        default:
          print("Unknown error.");
      }
      ```
    

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

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

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

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

في "قاعدة بيانات Firebase في الوقت الفعلي" و"قواعد أمان Cloud Storage"، يمكنك الحصول على رقم تعريف المستخدم الفريد الخاص بالمستخدم الذي سجّل الدخول من المتغيّر auth واستخدامه للتحكّم في البيانات التي يمكن للمستخدم الوصول إليها.

يمكنك السماح للمستخدمين بتسجيل الدخول إلى تطبيقك باستخدام عدة موفِّري مصادقة من خلال ربط بيانات اعتماد موفِّر المصادقة) بحساب مستخدم حالي.

لتسجيل خروج مستخدم، يُرجى الاتصال بالرقم signOut():

await FirebaseAuth.instance.signOut();