Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

Android에서 익명으로 Firebase에 인증

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

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

시작하기 전에

  1. 아직 Android 프로젝트에 Firebase를 추가 하지 않았다면 추가합니다.
  2. 모듈(앱 수준) Gradle 파일 (일반적으로 <project>/<app-module>/build.gradle )에서 Firebase 인증 Android 라이브러리에 대한 종속성을 추가합니다. Firebase Android BoM 을 사용하여 라이브러리 버전 관리를 제어하는 ​​것이 좋습니다.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // Add the dependency for the Firebase Authentication library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth'
    }
    

    Firebase Android BoM 을 사용하면 앱에서 항상 호환되는 Firebase Android 라이브러리 버전을 사용합니다.

    (또는) BoM을 사용 하지 않고 Firebase 라이브러리 종속성을 추가합니다.

    Firebase BoM을 사용하지 않기로 선택한 경우 종속성 줄에 각 Firebase 라이브러리 버전을 지정해야 합니다.

    앱에서 여러 Firebase 라이브러리를 사용하는 경우 모든 버전이 호환되도록 BoM을 사용하여 라이브러리 버전을 관리하는 것이 좋습니다.

    dependencies {
        // Add the dependency for the Firebase Authentication library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth:21.1.0'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // Add the dependency for the Firebase Authentication library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth-ktx'
    }
    

    Firebase Android BoM 을 사용하면 앱에서 항상 호환되는 Firebase Android 라이브러리 버전을 사용합니다.

    (또는) BoM을 사용 하지 않고 Firebase 라이브러리 종속성을 추가합니다.

    Firebase BoM을 사용하지 않기로 선택한 경우 종속성 줄에 각 Firebase 라이브러리 버전을 지정해야 합니다.

    앱에서 여러 Firebase 라이브러리를 사용하는 경우 모든 버전이 호환되도록 BoM을 사용하여 라이브러리 버전을 관리하는 것이 좋습니다.

    dependencies {
        // Add the dependency for the Firebase Authentication library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth-ktx:21.1.0'
    }
    
  3. 아직 앱을 Firebase 프로젝트에 연결하지 않았다면 Firebase 콘솔 에서 연결하세요.
  4. 익명 인증 사용:
    1. Firebase 콘솔 에서 인증 섹션을 엽니다.
    2. 로그인 방법 페이지에서 익명 로그인 방법을 활성화합니다.
    3. 선택 사항 : 프로젝트를 Identity Platform을 사용한 Firebase 인증으로 업그레이드한 경우 자동 정리를 활성화할 수 있습니다. 이 설정을 활성화하면 30일이 지난 익명 계정이 자동으로 삭제됩니다. 자동 정리가 활성화된 프로젝트에서 익명 인증은 더 이상 사용 제한 또는 청구 할당량에 포함되지 않습니다. 자동 정리 를 참조하십시오.

Firebase에 익명으로 인증

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

  1. 활동의 onCreate 메소드에서 FirebaseAuth 객체의 공유 인스턴스를 가져옵니다.

    Java

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();

    Kotlin+KTX

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth
  2. 활동을 초기화할 때 사용자가 현재 로그인되어 있는지 확인하십시오.

    Java

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        updateUI(currentUser);
    }

    Kotlin+KTX

    public override fun onStart() {
        super.onStart()
        // Check if user is signed in (non-null) and update UI accordingly.
        val currentUser = auth.currentUser
        updateUI(currentUser)
    }
  3. 마지막으로 signInAnonymously 를 호출하여 익명 사용자로 로그인합니다.

    Java

    mAuth.signInAnonymously()
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "signInAnonymously:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        updateUI(user);
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInAnonymously:failure", task.getException());
                        Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });

    Kotlin+KTX

    auth.signInAnonymously()
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    // Sign in success, update UI with the signed-in user's information
                    Log.d(TAG, "signInAnonymously:success")
                    val user = auth.currentUser
                    updateUI(user)
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(TAG, "signInAnonymously:failure", task.exception)
                    Toast.makeText(baseContext, "Authentication failed.",
                            Toast.LENGTH_SHORT).show()
                    updateUI(null)
                }
            }
    로그인에 성공하면 getCurrentUser 메서드를 사용하여 사용자의 계정 데이터를 가져올 수 있습니다.

익명 계정을 영구 계정으로 전환

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

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

    구글 로그인

    Java

    AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);

    Kotlin+KTX

    val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
    페이스북 로그인

    Java

    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());

    Kotlin+KTX

    val credential = FacebookAuthProvider.getCredential(token.token)
    이메일-비밀번호 로그인

    Java

    AuthCredential credential = EmailAuthProvider.getCredential(email, password);

    Kotlin+KTX

    val credential = EmailAuthProvider.getCredential(email, password)
  3. AuthCredential 객체를 로그인 사용자의 linkWithCredential 메서드에 전달합니다.

    Java

    mAuth.getCurrentUser().linkWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "linkWithCredential:success");
                        FirebaseUser user = task.getResult().getUser();
                        updateUI(user);
                    } else {
                        Log.w(TAG, "linkWithCredential:failure", task.getException());
                        Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });

    Kotlin+KTX

    auth.currentUser!!.linkWithCredential(credential)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    Log.d(TAG, "linkWithCredential:success")
                    val user = task.result?.user
                    updateUI(user)
                } else {
                    Log.w(TAG, "linkWithCredential:failure", task.exception)
                    Toast.makeText(baseContext, "Authentication failed.",
                            Toast.LENGTH_SHORT).show()
                    updateUI(null)
                }
            }

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

자동 정리

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

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

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

다음 단계

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