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 Authentication ใน 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 วัตถุในอนาคตหรือหากคุณกำลังเขียนเกมหรือแอปกับชนิดของห่วงปรับปรุงเป็นระยะ ๆ บางส่วนโดยการสำรวจสถานะในวงการปรับปรุง

ตัวอย่างเช่น การใช้อนาคต:

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);

รับผลการดำเนินการลงชื่อเข้าใช้แบบเดียวกับที่คุณได้รับผลการลงชื่อสมัครใช้

ตั้งค่าผู้ฟังสถานะการตรวจสอบและรับข้อมูลบัญชี

เมื่อต้องการตอบสนองต่อเหตุการณ์การลงชื่อเข้าใช้และออกจากระบบ ให้แนบ listener กับอ็อบเจ็กต์การพิสูจน์ตัวตนส่วนกลาง Listener นี้จะถูกเรียกเมื่อใดก็ตามที่สถานะการลงชื่อเข้าใช้ของผู้ใช้เปลี่ยนแปลง เนื่องจาก Listener ทำงานหลังจากที่อ็อบเจ็กต์การพิสูจน์ตัวตนได้รับการเตรียมข้อมูลเบื้องต้นโดยสมบูรณ์แล้วเท่านั้น และหลังจากการเรียกเครือข่ายใดๆ เสร็จสิ้น จึงเป็นที่ที่ดีที่สุดในการรับข้อมูลเกี่ยวกับผู้ใช้ที่ลงชื่อเข้าใช้

สร้างฟังโดยการใช้ firebase::auth::AuthStateListener ระดับนามธรรม ตัวอย่างเช่น ในการสร้าง Listener ที่ได้รับข้อมูลเกี่ยวกับผู้ใช้เมื่อผู้ใช้ลงชื่อเข้าใช้สำเร็จ:

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);

ขั้นตอนถัดไป

เรียนรู้วิธีเพิ่มการสนับสนุนสำหรับผู้ให้บริการข้อมูลประจำตัวอื่นๆ และบัญชีผู้เยี่ยมชมที่ไม่ระบุชื่อ: