ابدأ باستخدام مصادقة Firebase في C ++

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

قم بتوصيل مشروع C ++ الخاص بك بـ Firebase

قبل أن تتمكن من استخدام مصادقة Firebase ، تحتاج إلى:

  • سجل مشروع C ++ الخاص بك وقم بتكوينه لاستخدام Firebase.

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

  • أضف Firebase C ++ SDK إلى مشروع C ++ الخاص بك.

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

تسجيل مستخدمين جدد

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

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

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

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

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

// The lambda has the same signature as the callback function.
result.OnCompletion(
    [](const firebase::Future<firebase::auth::User*>& 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::User*> result =
    auth->CreateUserWithEmailAndPasswordLastResult();
if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::auth::kAuthErrorNone) {
    firebase::auth::User* user = *result.result();
    printf("Create user succeeded for email %s\n", user->email().c_str());
  } else {
    printf("Created user failed with error '%s'\n", result.error_message());
  }
}

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

أنشئ نموذجًا يسمح للمستخدمين الحاليين بتسجيل الدخول باستخدام عنوان بريدهم الإلكتروني وكلمة المرور. عندما يكمل المستخدم النموذج ، اتصل SignInWithEmailAndPassword :

firebase::Future<firebase::auth::User*> 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 != nullptr) {
      // 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 firebase::auth::Auth object:

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

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

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