Google is committed to advancing racial equity for Black communities. See how.
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

เริ่มต้นด้วยการรับรองความถูกต้องของ Firebase ใน C ++

คุณสามารถใช้การรับรองความถูกต้องของ Firebase เพื่ออนุญาตให้ผู้ใช้ลงชื่อเข้าใช้แอปของคุณโดยใช้วิธีการลงชื่อเข้าใช้อย่างน้อยหนึ่งวิธีรวมถึงที่อยู่อีเมลและการลงชื่อเข้าใช้รหัสผ่าน บทช่วยสอนนี้ช่วยให้คุณเริ่มต้นด้วยการรับรองความถูกต้องของ Firebase โดยแสดงวิธีเพิ่มที่อยู่อีเมลและการลงชื่อเข้าใช้รหัสผ่านในแอปของคุณ

เชื่อมต่อโครงการ C ++ ของคุณกับ Firebase

ก่อนที่คุณจะสามารถใช้การ รับรองความถูกต้องของ Firebase คุณต้อง:

  • ลงทะเบียนโครงการ C ++ ของคุณและกำหนดค่าให้ใช้ Firebase

    หากโครงการ C ++ ของคุณใช้ Firebase อยู่แล้วแสดงว่ามีการลงทะเบียนและกำหนดค่าสำหรับ Firebase แล้ว

  • ในโครงการระดับ build.gradle ไฟล์ให้แน่ใจว่าจะรวมถึงพื้นที่เก็บข้อมูล Maven ของ Google ในทั้งสองของคุณ buildscript และ allprojects ส่วน

  • เพิ่ม Firebase C ++ SDK ให้กับโปรเจ็กต์ C ++ ของคุณ

โปรดทราบว่าการเพิ่ม Firebase ลงในโครงการ C ++ ของคุณเกี่ยวข้องกับงานทั้งใน คอนโซล Firebase และในโครงการ C ++ แบบเปิด (ตัวอย่างเช่นคุณดาวน์โหลดไฟล์ Firebase config จากคอนโซลจากนั้นย้ายไปยังโครงการ 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");
    }
    // ...
  }
};
 

แนบ listener ด้วยเมธอด AddAuthStateListener ของ AddAuthStateListener firebase::auth::Auth :

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

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

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