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);
}