Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

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

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

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

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

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

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

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

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

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

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

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

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

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");
    }
    // ...
  }
};

إرفاق المستمع مع firebase::auth::Auth الكائن AddAuthStateListener الأسلوب:

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

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

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