المصادقة مع 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 المميز للمستخدم، أو رمز الوصول إلى 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 Realtime وقواعد أمان التخزين السحابي، يمكنك الحصول على معرف المستخدم الفريد للمستخدم الذي قام بتسجيل الدخول من متغير auth ، واستخدامه للتحكم في البيانات التي يمكن للمستخدم الوصول إليها.

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

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

await FirebaseAuth.instance.signOut();