Android
[Android&Firebase] 안드로이드 회원가입 기능 구현
최슬슬
2020. 8. 28. 14:32
※ 해당 포스터는 회원 정보를 파이어베이스에 저장하는 방식으로 구성되어 있습니다. 파이어베이스와 안드로이드 연동은 >>여기<<를 눌러 확인해주세요.
※ 해당 포스터에서 사용한 안드로이드 SDK 버전은 29이며, buildToolsVersion은 29.0.3을 사용했습니다.
※ 실행화면 ※
1. 파이어베이스에 접속
Authemtication 클릭하여 Sign-in method를 클릭합니다.
이곳에서 이메일/비밀번호의 상태가 중지됨이 되면 회원가입 기능이 작동하지 않으니 반드시 사용 설정됨으로 바꿔주셔야 합니다.
2. 회원가입 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() : 토스트 알림(작은 메세지 알림)을 띄워주는 함수