بدء استخدام مصادقة 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 المستقبلي، أو إذا كنت تريد إنشاء لعبة أو تطبيق ما باستخدام نوع متكرر من التحديثات الدورية، عن طريق وفحص الحالة في حلقة التحديث.

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

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

إرفاق أداة معالجة البيانات بعنصر firebase::auth::Auth طريقة AddAuthStateListener:

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

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

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