[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 사용자 인증을 통해 사용자 관리 및 앱의 보안을 강화할 수 있습니다.