[android] Firebase 사용자 인증

Firebase는 안정적이고 강력한 사용자 인증 시스템을 제공하여 Android 앱에 간편하게 통합할 수 있습니다. Firebase 사용자 인증은 이메일/비밀번호, 구글, 페이스북, 트위터 등 다양한 인증 방식을 지원하여 사용자 관리를 용이하게 합니다.

Firebase 프로젝트 설정

Firebase 콘솔에서 프로젝트를 생성하고 안드로이드 플랫폼을 추가합니다. google-services.json 파일을 프로젝트에 추가하여 Firebase와의 연결을 설정합니다.

Firebase 인증 플러그인 추가

앱의 build.gradle 파일에 Firebase 인증 플러그인을 추가합니다.

implementation 'com.google.firebase:firebase-auth:21.0.1'

이메일/비밀번호 인증 구현

1. 사용자 생성

이메일과 비밀번호를 사용하여 새 사용자를 생성합니다.

FirebaseAuth.getInstance().createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    // 사용자 생성 성공
                } else {
                    // 사용자 생성 실패
                }
            }
        });

2. 사용자 로그인

이메일과 비밀번호를 사용하여 사용자를 로그인합니다.

FirebaseAuth.getInstance().signInWithEmailAndPassword(email, password)
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    // 로그인 성공
                } else {
                    // 로그인 실패
                }
            }
        });

구글 로그인

구글 로그인을 통해 사용자를 인증합니다.

1. Firebase 콘솔 설정

Firebase 콘솔에서 구글 인증을 활성화하고 OAuth 2.0 클라이언트 ID를 등록합니다.

2. 구글 로그인 흐름 구현

Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, RC_SIGN_IN);
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RC_SIGN_IN) {
        Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
        handleSignInResult(task);
    }
}

private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
    try {
        GoogleSignInAccount account = completedTask.getResult(ApiException.class);
        firebaseAuthWithGoogle(account);
    } catch (ApiException e) {
        Log.w(TAG, "Google sign in failed", e);
    }
}

private void firebaseAuthWithGoogle(GoogleSignInAccount account) {
    AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
    FirebaseAuth.getInstance().signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // 구글 로그인 성공
                    } else {
                        // 구글 로그인 실패
                    }
                }
            });
}

역할 기반 접근 제어

Firebase 인증을 이용하여 앱의 역할 기반 접근 제어를 구현할 수 있습니다.
이용 가능한 Firebase 보안 규칙을 참조하여 접근 권한을 설정합니다.

Firebase를 이용한 안드로이드 앱의 사용자 인증은 안정적이고 다양한 인증 방식을 제공하여 개발 과정을 간편하고 안전하게 만들어줍니다. Firebase 사용자 인증을 통해 사용자 관리 및 앱의 보안을 강화할 수 있습니다.