자바 안드로이드 앱개발 강좌, 회원가입과 로그인 기능 만들기

안드로이드 앱 개발은 모바일 애플리케이션 개발의 흥미로운 분야로, 특히 자바는 안드로이드의 기본 프로그래밍 언어로 널리 사용됩니다. 이 글에서는 자바를 활용하여 간단한 회원가입과 로그인 기능을 구현하는 방법에 대해 자세히 설명하겠습니다. 이 과정에서는 Android Studio를 사용하며, Firebase를 로그인 및 회원가입 기능의 백엔드로 활용합니다.

1. 프로젝트 설정

  1. Android Studio를 실행합니다.
  2. 새 프로젝트를 만듭니다. “Empty Activity”를 선택하고, 프로젝트 이름과 패키지 이름을 입력합니다.
  3. Firebase와 연동하기 위해 Firebase Console에 프로젝트를 생성하고, Android 앱을 추가합니다.
  4. google-services.json 파일을 다운로드하여 프로젝트의 app 폴더에 추가합니다.
  5. build.gradle 파일을 수정하여 Firebase의 의존성을 추가합니다.

    dependencies {
        implementation 'com.google.firebase:firebase-auth:21.0.1'
        // 기타 의존성
    }

2. Firebase 설정

Firebase Authentication 서비스를 설정하여 이메일과 비밀번호로 회원가입 및 로그인을 할 수 있도록 합니다.

  1. Firebase Console에서 Authentication을 선택하고 “Get Started”를 클릭합니다.
  2. 로그인 방법에서 “Email/Password”를 활성화합니다.

3. XML 레이아웃 만들기

회원가입 및 로그인 화면을 만들기 위해 각각의 레이아웃 파일을 작성합니다.

activity_signup.xml


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <EditText
        android:id="@+id/signupEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="이메일 입력" />

    <EditText
        android:id="@+id/signupPassword"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="비밀번호 입력"
        android:inputType="textPassword" />

    <Button
        android:id="@+id/signupButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="회원가입" />

</LinearLayout>

activity_login.xml


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <EditText
        android:id="@+id/loginEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="이메일 입력" />

    <EditText
        android:id="@+id/loginPassword"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="비밀번호 입력"
        android:inputType="textPassword" />

    <Button
        android:id="@+id/loginButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="로그인" />

</LinearLayout>

4. 자바 코드 구현

이제 Activity 클래스에 회원가입과 로그인 기능을 구현합니다.

SignupActivity.java


import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

public class SignupActivity extends AppCompatActivity {

    private EditText signupEmail, signupPassword;
    private Button signupButton;
    private FirebaseAuth mAuth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_signup);

        signupEmail = findViewById(R.id.signupEmail);
        signupPassword = findViewById(R.id.signupPassword);
        signupButton = findViewById(R.id.signupButton);

        mAuth = FirebaseAuth.getInstance();

        signupButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String email = signupEmail.getText().toString();
                String password = signupPassword.getText().toString();

                registerUser(email, password);
            }
        });
    }

    private void registerUser(String email, String password) {
        mAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(this, task -> {
                if (task.isSuccessful()) {
                    FirebaseUser user = mAuth.getCurrentUser();
                    Toast.makeText(SignupActivity.this, "회원가입 성공: " + user.getEmail(), Toast.LENGTH_SHORT).show();
                    startActivity(new Intent(SignupActivity.this, LoginActivity.class));
                    finish();
                } else {
                    Toast.makeText(SignupActivity.this, "회원가입 실패: " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
                }
            });
    }
}

LoginActivity.java


import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

public class LoginActivity extends AppCompatActivity {

    private EditText loginEmail, loginPassword;
    private Button loginButton;
    private FirebaseAuth mAuth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        loginEmail = findViewById(R.id.loginEmail);
        loginPassword = findViewById(R.id.loginPassword);
        loginButton = findViewById(R.id.loginButton);

        mAuth = FirebaseAuth.getInstance();

        loginButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String email = loginEmail.getText().toString();
                String password = loginPassword.getText().toString();

                loginUser(email, password);
            }
        });
    }

    private void loginUser(String email, String password) {
        mAuth.signInWithEmailAndPassword(email, password)
            .addOnCompleteListener(this, task -> {
                if (task.isSuccessful()) {
                    FirebaseUser user = mAuth.getCurrentUser();
                    Toast.makeText(LoginActivity.this, "로그인 성공: " + user.getEmail(), Toast.LENGTH_SHORT).show();
                    // MainActivity로 이동
                } else {
                    Toast.makeText(LoginActivity.this, "로그인 실패: " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
                }
            });
    }
}

5. 테스트하기

앱을 실행하고 회원가입한 후, 로그인을 통해 기능이 정상적으로 작동하는지 확인합니다. Firebase Console에서 Authentication 항목을 통해 가입한 사용자 정보를 확인할 수 있습니다.

6. 결론

이번 강좌에서는 자바를 활용한 안드로이드 앱 개발에서 회원가입 및 로그인 기능을 Firebase를 이용하여 간단히 구현해 보았습니다. 이 기초적인 기능을 바탕으로 더 발전된 앱을 만들기 위한 발판이 될 것입니다.

앞으로 더 많은 안드로이드 앱 개발에 대한 주제를 다룰 예정입니다. 여러분의 안드로이드 개발 여정에 도움이 되길 바랍니다!

참고 자료