Catch up on everything we announced at this year's Firebase Summit. Learn more

เริ่มต้นใช้งาน 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);

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

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