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 데이터베이스의 데이터에 대한 액세스를 제어할 수 있습니다.