Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기

C++에서 Firebase 인증 시작하기

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

Firebase 인증을 사용하면 사용자가 이메일 주소 및 비밀번호 로그인을 비롯한 하나 이상의 로그인 방법과 Google 로그인 및 Facebook 로그인과 같은 연합 ID 제공업체를 사용하여 앱에 로그인할 수 있습니다. 이 가이드에서는 앱에 이메일 주소와 비밀번호 로그인을 추가하는 방법을 보여줌으로써 Firebase 인증을 시작할 수 있습니다.

Firebase에 C++ 프로젝트 연결

Firebase 인증 을 사용하려면 먼저 다음을 수행해야 합니다.

  • C++ 프로젝트를 등록하고 Firebase를 사용하도록 구성합니다.

    C++ 프로젝트에서 이미 Firebase를 사용하고 있다면 Firebase에 이미 등록 및 구성되어 있는 것입니다.

  • Firebase C++ SDK 를 C++ 프로젝트에 추가합니다.

C++ 프로젝트에 Firebase를 추가하려면 Firebase 콘솔 과 공개 C++ 프로젝트 모두에서 작업을 수행해야 합니다(예: 콘솔에서 Firebase 구성 파일을 다운로드한 다음 C++ 프로젝트로 이동).

신규 사용자 가입

새 사용자가 이메일 주소와 비밀번호를 사용하여 앱에 등록할 수 있는 양식을 만드십시오. 사용자가 양식을 완료하면 사용자가 제공한 이메일 주소와 암호를 확인한 다음 CreateUserWithEmailAndPassword 메서드에 전달합니다.

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

CreateUserWithEmailAndPasswordLastResult Future 객체에 콜백을 등록하거나 일종의 주기적 업데이트 루프가 있는 게임이나 앱을 작성하는 경우 업데이트 루프에서 상태를 폴링하여 계정 생성 작업의 상태를 확인할 수 있습니다.

예를 들어 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 firebase::auth::Auth 객체의 AddAuthStateListener 메소드를 사용하여 리스너를 연결합니다.

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

다음 단계

다른 ID 공급자 및 익명 게스트 계정에 대한 지원을 추가하는 방법을 알아보세요.