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

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

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

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

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

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

  • أضف Firebase C++ SDK إلى مشروع 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);

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

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