[Android&Firebase] 안드로이드 회원가입 기능 구현

2020. 8. 28. 14:32Android

※ 해당 포스터는 회원 정보를 파이어베이스에 저장하는 방식으로 구성되어 있습니다. 파이어베이스와 안드로이드 연동은 >>여기<<를 눌러 확인해주세요.
※ 해당 포스터에서 사용한 안드로이드 SDK 버전은 29이며, buildToolsVersion은 29.0.3을 사용했습니다.

 

※ 실행화면 ※

 

 

 

1. 파이어베이스에 접속

Authemtication 클릭하여 Sign-in method를 클릭합니다.

이곳에서 이메일/비밀번호의 상태가 중지됨이 되면 회원가입 기능이 작동하지 않으니 반드시 사용 설정됨으로 바꿔주셔야 합니다.

 

 

 

2. 회원가입 XML파일을 하나 생성합니다.

activity_singup.xml 디자인

// activity_signup 코드

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:gravity="center"
        android:textColor="#1F51B7"
        android:textSize="24sp"
        android:text="회원가입" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <EditText
            android:id="@+id/user_id"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:padding="10dp"
            android:gravity="left"
            android:textSize="15dp"
            android:hint="이메일" />

        <EditText
            android:id="@+id/user_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:padding="10dp"
            android:gravity="left"
            android:textSize="15dp"
            android:hint="비밀번호 입력" />

        <EditText
            android:id="@+id/user_password_check"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:padding="10dp"
            android:gravity="left"
            android:textSize="15dp"
            android:hint="비밀번호 확인" />

        <Button
            android:id="@+id/check"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="확인" />
    </LinearLayout>
</LinearLayout>
  • android:gravity : "center" : 가운데 정렬(left인 경우 왼쪽 정렬)
  • android:hint : 해당 텍스트 박스에 무엇을 입력하면 좋을지 사용자에게 알려주는 문구를 작성할 수 있음. 사용자가 해당 텍스트박스에 입력을 시행하면 hint 문구는 사라짐.

 

 

 

3. 회원가입 JAVA 파일을 하나 만듭니다.

package com.example.firebasetest;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

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

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;


public class SingUpActivity extends AppCompatActivity {
    private FirebaseAuth mAuth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_signup);
        mAuth = FirebaseAuth.getInstance();
        findViewById(R.id.check).setOnClickListener(onClickListener);
    }


    View.OnClickListener onClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.check:
                    signUp();
                    break;
            }
        }
    };


    private void signUp(){
        String id=((EditText)findViewById(R.id.user_id)).getText().toString();
        String password=((EditText)findViewById(R.id.user_id)).getText().toString();
        String passwordCheck=((EditText)findViewById(R.id.user_id)).getText().toString();

        if(id.length()>0 && password.length()>0 && passwordCheck.length()>0){
            if(password.equals(passwordCheck)){ 
                mAuth.createUserWithEmailAndPassword(id, password)
                        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                            @Override
                            public void onComplete(@NonNull Task<AuthResult> task) {
                                if (task.isSuccessful()) {
                                    Toast.makeText(SingUpActivity.this, "회원가입에 성공했습니다." ,Toast.LENGTH_SHORT).show();
                                } else {
                                    if(task.getException().toString() !=null){
                                        Toast.makeText(SingUpActivity.this, "회원가입에 실패했습니다." ,Toast.LENGTH_SHORT).show();
                                    }
                                }
                            }
                        });
            }
            else{
                Toast.makeText(SingUpActivity.this, "비밀번호가 일치하지 않습니다." ,Toast.LENGTH_SHORT).show();
            }
        }
        else{
            Toast.makeText(SingUpActivity.this, "아아디와 비밀번호를 확인해주세요." ,Toast.LENGTH_SHORT).show();
        }
    }
}
  • private FirebaseAuth mAuth : 안드로이드와 파이어베이스 사이의 인증을 확인하기 위한 인스턴스 선언
    mAuth = FirebaseAuth.getInstance() : 선언한 인스턴스를 초기화
  • mAuth.createUserWithEmailAndPassword(id, password)
    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() : 사용자가 입력한 아이디와 비밀번호가 파이어베이스에 저장시켜주는 코드
  • if(task.isSucessful()) : 정상적으로 회원정보가 저장된 경우
  • if(task.getException().toString() !=null) : 정상적으로 회원정보가 저장되지 않는 경우
  • Toast.makeText() : 토스트 알림(작은 메세지 알림)을 띄워주는 함수