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

C++를 사용하여 익명으로 Firebase에 인증

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

Firebase 인증을 사용하여 임시 익명 계정을 만들고 사용하여 Firebase에 인증할 수 있습니다. 이러한 임시 익명 계정을 사용하여 아직 앱에 가입하지 않은 사용자가 보안 규칙으로 보호되는 데이터로 작업할 수 있습니다. 익명의 사용자가 앱에 등록하기로 결정한 경우 로그인 자격 증명을 익명 계정에 연결 하여 향후 세션에서 보호된 데이터로 계속 작업할 수 있습니다.

시작하기 전에

  1. C++ 프로젝트에 Firebase를 추가합니다 .
  2. 아직 앱을 Firebase 프로젝트에 연결하지 않았다면 Firebase 콘솔 에서 연결하세요.
  3. 익명 인증 사용:
    1. Firebase 콘솔 에서 인증 섹션을 엽니다.
    2. 로그인 방법 페이지에서 익명 로그인 방법을 활성화합니다.
    3. 선택 사항 : 프로젝트를 Identity Platform을 사용한 Firebase 인증으로 업그레이드한 경우 자동 정리를 활성화할 수 있습니다. 이 설정을 활성화하면 30일이 지난 익명 계정이 자동으로 삭제됩니다. 자동 정리가 활성화된 프로젝트에서 익명 인증은 더 이상 사용 제한 또는 청구 할당량에 포함되지 않습니다. 자동 정리 를 참조하십시오.

Firebase에 익명으로 인증

로그아웃한 사용자가 Firebase 인증이 필요한 앱 기능을 사용하는 경우 다음 단계를 완료하여 사용자를 익명으로 로그인합니다.

Auth 클래스는 모든 API 호출의 게이트웨이입니다.
  1. 인증 및 앱 헤더 파일 추가:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. 초기화 코드에서 firebase::App 클래스를 만듭니다.
    #if defined(__ANDROID__)
      firebase::App* app =
          firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);
    #else
      firebase::App* app = firebase::App::Create(firebase::AppOptions());
    #endif  // defined(__ANDROID__)
    
  3. firebase::App 에 대한 firebase::auth::Auth 클래스를 가져옵니다. AppAuth 간에 일대일 매핑이 있습니다.
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
  • Auth::SignInAnonymously 를 호출합니다.
    firebase::Future<firebase::auth::User*> result = auth->SignInAnonymously();
    
  • 프로그램에 정기적으로 실행되는 업데이트 루프가 있는 경우(예: 초당 30회 또는 60회) Auth::SignInAnonymouslyLastResult :
    firebase::Future<firebase::auth::User*> result =
        auth->SignInAnonymouslyLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      if (result.error() == firebase::auth::kAuthErrorNone) {
        firebase::auth::User* user = *result.result();
        printf("Sign in succeeded for `%s`\n", user->display_name().c_str());
      } else {
        printf("Sign in failed with error '%s'\n", result.error_message());
      }
    }
    
    를 사용하여 업데이트당 한 번 결과를 확인할 수 있습니다. 또는 프로그램이 이벤트 기반인 경우 선호할 수 있습니다. Future 에 콜백을 등록합니다 .
  • 익명 계정을 영구 계정으로 전환

    익명의 사용자가 앱에 가입할 때 새 계정으로 작업을 계속하도록 허용할 수 있습니다. 예를 들어 사용자가 가입하기 전에 장바구니에 추가한 항목을 새 계정에서 사용할 수 있도록 할 수 있습니다. 계정의 장바구니. 이렇게 하려면 다음 단계를 완료하십시오.

    1. 사용자가 가입할 때 Auth::SignInWith 메서드 중 하나를 호출할 때까지 사용자의 인증 공급자에 대한 로그인 흐름을 완료합니다. 예를 들어 사용자의 Google ID 토큰, Facebook 액세스 토큰 또는 이메일 주소와 비밀번호를 가져옵니다.
    2. 새 인증 공급자에 대한 auth::Credential 을 가져옵니다.

      Google 로그인
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      
      Facebook 로그인
      firebase::auth::Credential credential =
          firebase::auth::FacebookAuthProvider::GetCredential(access_token);
      
      이메일 비밀번호 로그인
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
      
    3. auth::Credential 객체를 로그인 사용자의 LinkWithCredential 메서드에 전달합니다.

      // Link the new credential to the currently active user.
      firebase::auth::User* current_user = auth->current_user();
      firebase::Future<firebase::auth::User*> result =
          current_user->LinkWithCredential(credential);
      

    LinkWithCredential 에 대한 호출이 성공하면 사용자의 새 계정이 익명 계정의 Firebase 데이터에 액세스할 수 있습니다.

    자동 정리

    프로젝트를 Identity Platform을 사용한 Firebase 인증으로 업그레이드한 경우 Firebase 콘솔에서 자동 정리를 활성화할 수 있습니다. 이 기능을 활성화하면 Firebase에서 30일이 지난 익명 계정을 자동으로 삭제하도록 허용합니다. 자동 정리가 활성화된 프로젝트에서 익명 인증은 사용 제한 또는 청구 할당량에 포함되지 않습니다.

    • 자동 정리를 활성화한 후 생성된 모든 익명 계정은 생성 후 30일이 지나면 자동으로 삭제될 수 있습니다.
    • 자동 정리를 활성화하기 전에 생성된 익명 계정은 자동 정리를 활성화한 후 30일부터 자동 삭제 대상이 됩니다.
    • 자동 정리를 끄면 삭제되도록 예약된 모든 익명 계정은 삭제되도록 예약된 상태로 유지됩니다. 이러한 계정은 사용 한도 또는 청구 할당량에 포함되지 않습니다.
    • 익명 계정을 로그인 방법에 연결하여 "업그레이드"하면 계정이 자동으로 삭제되지 않습니다.

    이 기능을 사용 설정하기 전에 영향을 받는 사용자 수를 확인하고 프로젝트를 Identity Platform으로 Firebase 인증으로 업그레이드한 경우 Cloud Logging 에서 is_anon 으로 필터링할 수 있습니다.

    다음 단계

    이제 사용자가 Firebase로 인증할 수 있으므로 Firebase 규칙 을 사용하여 Firebase 데이터베이스의 데이터에 대한 액세스를 제어할 수 있습니다.