المصادقة مع Firebase بشكل مجهول باستخدام C++

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

قبل ان تبدأ

  1. أضف Firebase إلى مشروع C++ الخاص بك .
  2. إذا لم تكن قد قمت بعد بربط تطبيقك بمشروع Firebase الخاص بك، فقم بذلك من وحدة تحكم Firebase .
  3. تمكين المصادقة المجهولة:
    1. في وحدة تحكم Firebase ، افتح قسم المصادقة .
    2. في صفحة أساليب تسجيل الدخول ، قم بتمكين طريقة تسجيل الدخول المجهولة .
    3. اختياري : إذا قمت بترقية مشروعك إلى مصادقة Firebase باستخدام Identity Platform ، فيمكنك تمكين التنظيف التلقائي. عند تمكين هذا الإعداد، سيتم حذف الحسابات المجهولة الأقدم من 30 يومًا تلقائيًا. في المشاريع التي تم تمكين التنظيف التلقائي فيها، لن يتم احتساب المصادقة المجهولة ضمن حدود الاستخدام أو حصص الفواتير. راجع التنظيف التلقائي .

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

عندما يستخدم مستخدم قام بتسجيل الخروج إحدى ميزات التطبيق التي تتطلب المصادقة مع Firebase، قم بتسجيل دخول المستخدم بشكل مجهول عن طريق إكمال الخطوات التالية:

فئة Auth هي البوابة لجميع استدعاءات API.
  1. أضف ملفات رأس المصادقة والتطبيق:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. في رمز التهيئة الخاص بك، قم بإنشاء فئة firebase::App .
    #if defined(__ANDROID__)
      firebase::App* app =
          firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);
    #else
      firebase::App* app = firebase::App::Create(firebase::AppOptions());
    #endif  // defined(__ANDROID__)
    
  3. احصل على فئة firebase::auth::Auth لقاعدة firebase::App الخاصة بك. يوجد تعيين واحد لواحد بين App و Auth .
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
  • استدعاء Auth::SignInAnonymously .
    firebase::Future<firebase::auth::AuthResult> result =
        auth->SignInAnonymously();
    
  • إذا كان برنامجك يحتوي على حلقة تحديث يتم تشغيلها بانتظام (على سبيل المثال، 30 أو 60 مرة في الثانية)، فيمكنك التحقق من النتائج مرة واحدة لكل تحديث باستخدام Auth::SignInAnonymouslyLastResult :
    firebase::Future<firebase::auth::AuthResult> result =
        auth->SignInAnonymouslyLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      if (result.error() == firebase::auth::kAuthErrorNone) {
        firebase::auth::AuthResult auth_result = *result.result();
        printf("Sign in succeeded for `%s`\n",
               auth_result.user.display_name().c_str());
      } else {
        printf("Sign in failed with error '%s'\n", result.error_message());
      }
    }
    
    أو، إذا كان برنامجك مدفوعًا بالأحداث، فقد تفضل لتسجيل رد على المستقبل .
  • تحويل الحساب المجهول إلى حساب دائم

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

    1. عندما يقوم المستخدم بالتسجيل، أكمل تدفق تسجيل الدخول لموفر مصادقة المستخدم حتى، على سبيل المثال لا الحصر، استدعاء إحدى أساليب Auth::SignInWith . على سبيل المثال، احصل على رمز معرف Google المميز للمستخدم، أو رمز الوصول إلى Facebook، أو عنوان البريد الإلكتروني وكلمة المرور.
    2. الحصول على auth::Credential لموفر المصادقة الجديد:

      تسجيل الدخول إلى Google
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      
      تسجيل الدخول إلى Facebook
      firebase::auth::Credential credential =
          firebase::auth::FacebookAuthProvider::GetCredential(access_token);
      
      تسجيل الدخول بكلمة مرور البريد الإلكتروني
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
      
    3. قم بتمرير كائن auth::Credential إلى أسلوب LinkWithCredential الخاص بمستخدم تسجيل الدخول:

      // Link the new credential to the currently active user.
      firebase::auth::User current_user = auth->current_user();
      firebase::Future<firebase::auth::AuthResult> result =
          current_user.LinkWithCredential(credential);
      

    إذا نجح استدعاء LinkWithCredential ، فيمكن لحساب المستخدم الجديد الوصول إلى بيانات Firebase الخاصة بالحساب المجهول.

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

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

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

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

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

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