public class MainActivity extends AppCompatActivity {
// Firebase 인증을 사용하기 위한 객체
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
initView();
}
// ...
// Step1. 가입 요청 메소드
public void signup(View view) {
// EditText로 email과 password 입력
String email = signupEmail.getText().toString();
String password = signupPassword.getText().toString();
// 이메일 유효성 검사
if (!isValidEmail(email) || !isValidPassword(password)) {
if (!isValidEmail(email)) {
signupCheckEmail.setVisibility(View.VISIBLE);
}
if (!isValidPassword(password)) {
signupCheckPassword.setVisibility(View.VISIBLE);
}
return;
}
signupCheckEmail.setVisibility(View.GONE);
signupCheckPassword.setVisibility(View.GONE);
// Step1. 가입 요청
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
FirebaseUser user = mAuth.getCurrentUser();
// Step2. 메일 인증 요청 처리
user.sendEmailVerification()
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
// 요청 메일 전송이 완료되면 해당 메소드 실행
Toast.makeText(MainActivity.this,
"메일 발송 완료!",
Toast.LENGTH_SHORT).show();
}
});
// 가입에 실패할 경우, 토스트 메시지 반환
} else {
// If sign in fails, display a message to the user.
Toast.makeText(MainActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
}
});
}
// Step3. 로그인 확인 메소드
public void signin(View view) {
// EditText로 email과 password 입력
String email = signinEmail.getText().toString();
String password = signinPassword.getText().toString();
// 이메일 유효성 검사
if (!isValidEmail(email) || !isValidPassword(password)) {
if (!isValidEmail(email)) {
signinCheckEmail.setVisibility(View.VISIBLE);
}
if (!isValidPassword(password)) {
signinCheckPassword.setVisibility(View.VISIBLE);
}
return;
}
signinCheckEmail.setVisibility(View.GONE);
signinCheckPassword.setVisibility(View.GONE);
// Step3. 로그인 확인
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
FirebaseUser user = mAuth.getCurrentUser();
// Step2의 메일 인증을 확인하는 구문
if(user.isEmailVerified()) {
Toast.makeText(MainActivity.this,
"Welcome! " + user.getEmail(),
Toast.LENGTH_SHORT).show();
}
} else {
// If sign in fails, display a message to the user.
Toast.makeText(MainActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
}
});
}
// 이메일의 유효성 검사 메소드
public static boolean isValidEmail(String email) {
boolean err = false;
String regex = "^[_a-z0-9-]+(.[_a-z0-9-]+)*@(?:\\w+\\.)+\\w+$";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(email);
if(m.matches()) {
err = true;
}
return err;
}
// 패스워드의 유효성 검사 메소드
public static boolean isValidPassword(String password) {
boolean err = false;
String regex = "^[a-zA-Z0-9]{8,}$";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(password);
if(m.matches()) {
err = true;
}
return err;
}
}
댓글