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

Android에서 Firebase 인증 시작하기

앱을 Firebase에 연결

아직 추가하지 않았다면 Android 프로젝트에 Firebase를 추가합니다 .

앱에 Firebase 인증 추가

모듈(앱 수준) 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'
}

인증 공급자를 사용하려면 Firebase 콘솔 에서 활성화해야 합니다. Firebase 인증 섹션의 로그인 방법 페이지로 이동하여 이메일/비밀번호 로그인 및 앱에 원하는 다른 ID 공급업체를 활성화합니다.

(선택사항) Firebase 로컬 에뮬레이터 도구 모음으로 프로토타입 제작 및 테스트

앱이 사용자를 인증하는 방법에 대해 이야기하기 전에 인증 기능의 프로토타입을 만들고 테스트하는 데 사용할 수 있는 도구 모음인 Firebase 로컬 에뮬레이터 도구 모음을 소개하겠습니다. 인증 기술과 공급자 중에서 결정하거나, 인증 및 Firebase 보안 규칙을 사용하여 공개 및 비공개 데이터로 다양한 데이터 모델을 시도하거나, 로그인 UI 디자인의 프로토타입을 제작하는 경우 라이브 서비스를 배포하지 않고 로컬에서 작업할 수 있는 것이 좋습니다. .

인증 에뮬레이터는 앱이 에뮬레이트된 데이터베이스 콘텐츠 및 구성은 물론 선택적으로 에뮬레이트된 프로젝트 리소스(함수, 기타 데이터베이스 및 보안 규칙)와 상호 작용할 수 있도록 하는 로컬 에뮬레이터 제품군의 일부입니다.

인증 에뮬레이터를 사용하려면 몇 단계만 거치면 됩니다.

  1. 에뮬레이터에 연결하기 위해 앱의 테스트 구성에 코드 줄을 추가합니다.
  2. 로컬 프로젝트 디렉터리의 루트에서 firebase emulators:start 를 실행합니다.
  3. 대화형 프로토타이핑을 위해 로컬 에뮬레이터 도구 모음 UI를 사용하거나 비대화형 테스트를 위해 인증 에뮬레이터 REST API를 사용합니다.

자세한 가이드는 앱을 인증 에뮬레이터에 연결 에서 확인할 수 있습니다. 자세한 내용은 로컬 에뮬레이터 제품군 소개 를 참조하십시오.

이제 사용자를 인증하는 방법을 계속 살펴보겠습니다.

현재 인증 상태 확인

  1. FirebaseAuth 인스턴스를 선언합니다.

    Java

    private FirebaseAuth mAuth;

    Kotlin+KTX

    private lateinit var auth: FirebaseAuth
  2. onCreate() 메서드에서 FirebaseAuth 인스턴스를 초기화합니다.

    Java

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

    Kotlin+KTX

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

    Java

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

    Kotlin+KTX

    public override fun onStart() {
        super.onStart()
        // Check if user is signed in (non-null) and update UI accordingly.
        val currentUser = auth.currentUser
        if(currentUser != null){
            reload();
        }
    }

신규 사용자 등록

이메일 주소와 암호를 가져와 유효성을 검사한 다음 createUserWithEmailAndPassword 메서드를 사용하여 새 사용자를 만드는 새 createAccount 메서드를 만듭니다.

Java

mAuth.createUserWithEmailAndPassword(email, password)
        .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, "createUserWithEmail:success");
                    FirebaseUser user = mAuth.getCurrentUser();
                    updateUI(user);
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(TAG, "createUserWithEmail:failure", task.getException());
                    Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                            Toast.LENGTH_SHORT).show();
                    updateUI(null);
                }
            }
        });

Kotlin+KTX

auth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                // Sign in success, update UI with the signed-in user's information
                Log.d(TAG, "createUserWithEmail:success")
                val user = auth.currentUser
                updateUI(user)
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "createUserWithEmail:failure", task.exception)
                Toast.makeText(baseContext, "Authentication failed.",
                        Toast.LENGTH_SHORT).show()
                updateUI(null)
            }
        }

이메일과 암호로 새 사용자를 등록하는 양식을 추가하고 제출 시 이 새 메소드를 호출하십시오. 빠른 시작 샘플 에서 예를 볼 수 있습니다.

기존 사용자 로그인

이메일 주소와 암호를 가져와 유효성을 검사한 다음 signIn 메서드로 사용자를 로그인하는 signInWithEmailAndPassword 메서드를 만듭니다.

Java

mAuth.signInWithEmailAndPassword(email, password)
        .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, "signInWithEmail:success");
                    FirebaseUser user = mAuth.getCurrentUser();
                    updateUI(user);
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(TAG, "signInWithEmail:failure", task.getException());
                    Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                            Toast.LENGTH_SHORT).show();
                    updateUI(null);
                }
            }
        });

Kotlin+KTX

auth.signInWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                // Sign in success, update UI with the signed-in user's information
                Log.d(TAG, "signInWithEmail:success")
                val user = auth.currentUser
                updateUI(user)
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "signInWithEmail:failure", task.exception)
                Toast.makeText(baseContext, "Authentication failed.",
                        Toast.LENGTH_SHORT).show()
                updateUI(null)
            }
        }

이메일과 암호로 사용자를 로그인하는 양식을 추가하고 제출 시 이 새 메서드를 호출합니다. 빠른 시작 샘플 에서 예를 볼 수 있습니다.

사용자 정보에 액세스

사용자가 성공적으로 로그인한 경우 getCurrentUser 메서드를 사용하여 언제든지 계정 데이터를 가져올 수 있습니다.

Java

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // Name, email address, and profile photo Url
    String name = user.getDisplayName();
    String email = user.getEmail();
    Uri photoUrl = user.getPhotoUrl();

    // Check if user's email is verified
    boolean emailVerified = user.isEmailVerified();

    // The user's ID, unique to the Firebase project. Do NOT use this value to
    // authenticate with your backend server, if you have one. Use
    // FirebaseUser.getIdToken() instead.
    String uid = user.getUid();
}

Kotlin+KTX

val user = Firebase.auth.currentUser
user?.let {
    // Name, email address, and profile photo Url
    val name = user.displayName
    val email = user.email
    val photoUrl = user.photoUrl

    // Check if user's email is verified
    val emailVerified = user.isEmailVerified

    // The user's ID, unique to the Firebase project. Do NOT use this value to
    // authenticate with your backend server, if you have one. Use
    // FirebaseUser.getToken() instead.
    val uid = user.uid
}

다음 단계

다른 ID 및 인증 서비스 추가에 대한 가이드를 살펴보세요.