谷歌致力於推進種族平等的黑人社區。 怎麼看。
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

開始使用火力地堡認證在C ++

您可以使用火力地堡身份驗證,以允許用戶使用一個或多個登錄方式,包括電子郵件地址和密碼登錄,並聯合身份提供商如谷歌登錄和Facebook的登錄登錄到您的應用程序。本教程讓你開始與火力地堡認證通過向您展示如何添加電子郵件地址和密碼登錄到您的應用程序。

你的C ++項目連接到火力地堡

之前,你可以用火力地堡認證 ,您需要:

  • 註冊您的C ++項目,其配置為使用火力地堡。

    如果你的C ++項目已經使用了火力地堡,那麼它已經註冊並配置火力地堡。

  • 在項目級build.gradle文件,確保包括兩個你谷歌的Maven倉庫buildscriptallprojects部分。

  • 添加火力地堡C ++ SDK到C ++項目。

注意添加火力地堡到C ++項目既包括在任務火力地堡控制台 ,並在您打開C ++項目(例如,您從控制台下載火力地堡的配置文件,然後將其移動到你的C ++項目)。

註冊新用戶

創建一個表單,允許新用戶使用他們的電子郵件地址和密碼與您的應用程序註冊。當用戶完成該表格,驗證由用戶提供的電子郵件地址和密碼,然後將它們傳遞到CreateUserWithEmailAndPassword方法:

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

您可以通過註冊上一個回調確認帳戶創建操作的狀態CreateUserWithEmailAndPasswordLastResult Future對象,或者,如果你正在寫一個遊戲或應用程序以某種週期性更新循環的,通過輪詢的更新循環的狀態。

例如,使用一個未來:

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

下一步

了解如何增加對其他身份提供商和匿名來賓帳戶支持: