반응형
1. 연결
Tools > Firebase > Authentication
계정 연결
프로젝트 생성
로그인 라이브러리 설치
sign-in method
2. 이메일 회원가입 및 로그인
// 이메일 로그인
fun signinEmail() {
var inputId = binding.edtInputId.text.toString()
var inputPw = binding.edtInputPw.text.toString()
auth?.signInWithEmailAndPassword(inputId,inputPw)
?.addOnCompleteListener {
task ->
if(task.isSuccessful) {
// Login, 아이디와 패스워드가 맞았을 때
moveMainPage(task.result?.user)
Toast.makeText(this,inputId+"님 환영합니다", Toast.LENGTH_LONG).show()
} else {
// Show the error message, 아이디와 패스워드가 틀렸을 때
Toast.makeText(this, task.exception?.message, Toast.LENGTH_LONG).show()
}
}
}
// 파이어베이스 유저 확인 후 로그인
fun moveMainPage(user: FirebaseUser?) {
if(user != null) {
startActivity(Intent(this, MainActivity::class.java))
}
}
// 파이어베이스 Auth 회원가입
fun signUp() {
var edtInputNewId = binding.edtInputNewId.text.toString()
var edtInputNewPw = binding.edtInputNewPw.text.toString()
var edtInputNewPw2 = binding.edtInputNewPw2.text.toString()
if (edtInputNewPw == edtInputNewPw2) {
auth?.createUserWithEmailAndPassword(edtInputNewId, edtInputNewPw)?.addOnCompleteListener {
task ->
if(task.isSuccessful){
//정상적으로 이메일과 비번이 전달되어
//새 유저 계정을 생성과 서버db 저장 완료
//즉, 기존에 있는 계정이 아니다!
goLoginMainActivity(task.result?.user)
Toast.makeText(this, "회원가입 완료", Toast.LENGTH_SHORT).show()
}
else if (task.exception?.message.isNullOrEmpty()==false){
//예외 혹은 에러 메시지
Toast.makeText(this,task.exception?.message,Toast.LENGTH_LONG).show()
}
else {
//이미 있는 계정
Toast.makeText(this, "이미 등록된 계정입니다", Toast.LENGTH_SHORT).show()
}
}
}
// LoginMainActivity로 이동
fun goLoginMainActivity(user: FirebaseUser?) {
// 파이어베이스 유저 상태가 생성된 경우 다음 페이지로 넘어갈 수 있음
if(user != null) {
startActivity(Intent(this, LoginMainActivity::class.java))
}
}
반응형
'Android > Android Kotlin' 카테고리의 다른 글
[Android Kotlin] Realtime Database orderByChild 사용법 (0) | 2023.10.26 |
---|---|
[Android Kotlin] 네이버 로그인 (0) | 2023.10.25 |
[Android Kotlin] LayoutManager 종류 (0) | 2023.10.25 |
[Android Kotlin] Realtime Database 사용법 (0) | 2023.10.25 |
[Android Kotlin] RecyclerView + LiveData, ViewModel, Firebase Realtime Database, DataBinding (0) | 2023.10.25 |