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

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

قبل البدء

  1. أضِف Firebase إلى مشروع C++ الخاص بك.
  2. إذا لم تكن قد ربطت تطبيقك بمشروعك في Firebase، يمكنك إجراء ذلك من خلال وحدة تحكُّم Firebase.
  3. فعِّل المصادقة بدون الكشف عن هويتك:
    1. في وحدة تحكُّم Firebase، افتح قسم المصادقة.
    2. في صفحة طرق تسجيل الدخول، فعِّل طريقة تسجيل الدخول مجهول الهوية.
    3. اختياري: في حال ترقية مشروعك إلى مصادقة Firebase باستخدام منصّة الهوية، يمكنك تفعيل إزالة البرامج غير المرغوب فيها تلقائيًا. عند تفعيل هذا الخيار، سيتم تلقائيًا حذف الحسابات المجهولة الهوية التي مرّ عليها أكثر من 30 يومًا. في المشاريع التي تم فيها تفعيل ميزة "التنظيف التلقائي"، لن تُحتسَب المصادقة المجهولة الهوية ضمن حدود الاستخدام أو حصص الفوترة. راجِع تنظيف البيانات تلقائيًا.

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

عندما يستخدم مستخدم لم يسجّل الدخول ميزة تطبيق تتطلّب المصادقة باستخدام Firebase، سجِّل دخوله مع إخفاء الهوية من خلال إكمال الخطوات التالية:

الفئة Auth هي مدخل جميع طلبات البيانات من واجهة برمجة التطبيقات.
  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);
      
      تسجيل الدخول باستخدام عنوان البريد الإلكتروني (Email-password)
      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 باستخدام النظام الأساسي للهوية، يمكنك تفعيل ميزة الإزالة التلقائية في "وحدة تحكُّم Firebase". عند تفعيل هذه الميزة، تسمح لمنصة Firebase بحذف الحسابات المجهولة الهوية التي مرّ عليها أكثر من 30 يومًا تلقائيًا. في المشاريع التي تم فيها تفعيل ميزة "التنظيف التلقائي"، لن يتم احتساب المصادقة المجهولة ضمن حدود الاستخدام أو حصص الفوترة.

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

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

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

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