LoginActivity - GachonCapstoneTeam/TTS_JAVA GitHub Wiki
🔐 LoginActivity
LoginActivity는 이메일/비밀번호 및 구글 계정을 통한 사용자 로그인 기능을 제공합니다. Firebase Authentication과 연동되며, 신규 사용자의 경우 실시간 데이터베이스에 기본 사용자 정보를 등록합니다.
✅ 주요 기능 요약
| 기능 | 설명 |
|---|---|
| 이메일/비밀번호 로그인 | Firebase Auth로 인증 |
| 구글 계정 로그인 | GoogleSignInClient로 연동하여 Firebase Auth 인증 수행 |
| 신규 사용자 등록 | Google 신규 사용자일 경우, Realtime Database에 사용자 정보 저장 |
| 자동 로그인 지원 | 이미 로그인된 사용자는 자동으로 basic_layout으로 이동 |
📌 이메일 로그인 처리
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this, task -> {
if (task.isSuccessful()) {
FirebaseUser user = mAuth.getCurrentUser();
updateUI(user);
} else {
updateUI(null);
}
});
📌 구글 로그인 요청 및 결과 처리
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, RC_SIGN_IN);
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (requestCode == RC_SIGN_IN) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
firebaseAuthWithGoogle(account.getIdToken());
}
}
📌 Firebase로 구글 인증 및 사용자 정보 저장
AuthCredential credential = GoogleAuthProvider.getCredential(idToken, null);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, task -> {
if (task.getResult().getAdditionalUserInfo().isNewUser()) {
saveGoogleUserToDatabase(user);
}
});
private void saveGoogleUserToDatabase(FirebaseUser firebaseUser) {
SignUpActivity.User userObject = new SignUpActivity.User(email, nickname);
mDatabase.child("users").child(userId).setValue(userObject);
}