بدء استخدام مصادقة Firebase بلغة C++

يمكنك استخدام مصادقة Firebase للسماح للمستخدمين بتسجيل الدخول إلى تطبيقك باستخدام طريقة واحدة أو أكثر من طرق تسجيل الدخول، بما في ذلك عنوان البريد الإلكتروني وتسجيل الدخول باستخدام كلمة المرور، وموفِّري الهوية الموحّدة مثل "تسجيل الدخول بحساب Google" وتسجيل الدخول إلى Facebook. يساعدك هذا البرنامج التعليمي في بدء استخدام مصادقة Firebase من خلال توضيح كيفية إضافة عنوان البريد الإلكتروني وتسجيل الدخول باستخدام كلمة المرور إلى تطبيقك.

ربط مشروع C++ بـ Firebase

قبل أن تتمكن من استخدام مصادقة Firebase، عليك إجراء ما يلي:

  • سجّل مشروع C++ الخاص بك واضبطه لاستخدام Firebase.

    إذا كان مشروعك على C++ يستخدم Firebase بالفعل، فإنه قد تم تسجيله وإعداده لـ Firebase.

  • أضِف حزمة تطوير البرامج (SDK) لـ Firebase C++ إلى مشروع C++.

تجدر الإشارة إلى أنّ إضافة Firebase إلى مشروع C++ تتضمّن مهامًا في وحدة تحكُّم Firebase وفي مشروع C++ المفتوح (على سبيل المثال، يمكنك تنزيل ملفات إعداد Firebase من وحدة التحكّم، ثم نقلها إلى مشروع C++ ).

تسجيل اشتراك مستخدمين جدد

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

firebase::Future<firebase::auth::AuthResult> result =
    auth->CreateUserWithEmailAndPassword(email, password);

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

على سبيل المثال، استخدام المستقبل:

firebase::Future<firebase::auth::AuthResult> result =
    auth->CreateUserWithEmailAndPasswordLastResult();

// The lambda has the same signature as the callback function.
result.OnCompletion(
    [](const firebase::Future<firebase::auth::AuthResult>& result,
       void* user_data) {
      // `user_data` is the same as &my_program_context, below.
      // Note that we can't capture this value in the [] because std::function
      // is not supported by our minimum compiler spec (which is pre C++11).
      MyProgramContext* program_context =
          static_cast<MyProgramContext*>(user_data);

      // Process create user result...
      (void)program_context;
    },
    &my_program_context);

أو استخدِم الاستطلاع، مثل المثال التالي في حلقة تحديثات لعبتك:

firebase::Future<firebase::auth::AuthResult> result =
    auth->CreateUserWithEmailAndPasswordLastResult();
if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::auth::kAuthErrorNone) {
    firebase::auth::AuthResult* auth_result = *result.result();
    printf("Create user succeeded for email %s\n", auth_result.user.email().c_str());
  } else {
    printf("Created user failed with error '%s'\n", result.error_message());
  }
}

تسجيل دخول المستخدمين الحاليين

إنشاء نموذج يتيح للمستخدمين الحاليين تسجيل الدخول باستخدام عنوان البريد الإلكتروني وكلمة المرور. عندما يُكمل المستخدم النموذج، يمكنك استدعاء طريقة SignInWithEmailAndPassword:

firebase::Future<firebase::auth::AuthResult> result =
    auth->SignInWithEmailAndPassword(email, password);

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

ضبط أداة معالجة حالة المصادقة والحصول على بيانات الحساب

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

أنشئ المستمع من خلال تنفيذ فئة firebase::auth::AuthStateListener التجريدية. على سبيل المثال، لإنشاء مستمع يحصل على معلومات حول المستخدم عندما يسجِّل المستخدم دخوله بنجاح:

class MyAuthStateListener : public firebase::auth::AuthStateListener {
 public:
  void OnAuthStateChanged(firebase::auth::Auth* auth) override {
    firebase::auth::User user = auth.current_user();
    if (user.is_valid()) {
      // User is signed in
      printf("OnAuthStateChanged: signed_in %s\n", user.uid().c_str());
      const std::string displayName = user.DisplayName();
      const std::string emailAddress = user.Email();
      const std::string photoUrl = user.PhotoUrl();
    } else {
      // User is signed out
      printf("OnAuthStateChanged: signed_out\n");
    }
    // ...
  }
};

أرفق المستمع باستخدام طريقة AddAuthStateListener لكائن firebase::auth::Auth:

MyAuthStateListener state_change_listener;
auth->AddAuthStateListener(&state_change_listener);

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

تعرَّف على كيفية إتاحة موفِّري الهوية الآخرين وحسابات الضيوف المجهولة الهوية: