* 이 글은 인프런 강의 <[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린>을 보고 정리한 글입니다.
세부목표 (3)
Firebase 프로젝트를 생성한다.
SplashActivity에서 로그인을 이미 하였으면 MainActivity로, 로그인을 안 했다면 JoinActivity로 넘어간다.
JoinActivity에서 이메일과 비번을 입력하여 회원가입을 한다.
회원가입 버튼을 누르면 MainActivity로 넘어간다.
파이어베이스 프로젝트 생성, 인증 설정
파이어베이스 프로젝트 생성과 인증에 관련된 법은 다음 링크 글에서 이미 소개를 하였다.
여기서는 인증을 이메일/비밀번호를 사용하겠다고 체크를 한다.
SplashActivity
회원가입을 하지 않았다면 JoinActivity로 이동하고
회원가입을 이미 하였다면 MainActivity로 이동한다.
class SplashActivity : AppCompatActivity() {
private lateinit var auth: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_splash)
// FirebaseAuth 인스턴스를 초기화
auth = Firebase.auth
// 현재 사용자의 UID가 null인지 확인
if (auth.currentUser?.uid == null) {
// UID가 null이면 3초 후 JoinActivity로 전환
Handler().postDelayed({
startActivity(Intent(this, JoinActivity::class.java))
// SplashActivity를 종료
finish()
}, 3000)
} else {
// UID가 null이 아니면 3초 후 MainActivity로 전환
Handler().postDelayed({
startActivity(Intent(this, MainActivity::class.java))
// SplashActivity를 종료
finish()
}, 3000)
}
}
}
activity_join.xml
JoinActivity의 회원가입 창 레이아웃을 만든다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".JoinActivity"
android:orientation="vertical">
<EditText
android:id="@+id/emailArea"
android:layout_margin="20dp"
android:hint="email"
android:layout_width="match_parent"
android:layout_height="50dp"/>
<EditText
android:id="@+id/passwordArea"
android:layout_margin="20dp"
android:hint="password"
android:layout_width="match_parent"
android:layout_height="50dp"/>
<Button
android:id="@+id/joinBtn"
android:text="회원가입"
android:layout_margin="20dp"
android:padding="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
JoinActivity
회원가입이 정상적으로 되었을 경우 MainActivity로 넘어가도록 한다.
파이어베이스 비밀번호 인증에 대한 코드는 다음 링크에 소개되어 있다.
https://firebase.google.com/docs/auth/android/password-auth?hl=ko
class JoinActivity : AppCompatActivity() {
private lateinit var auth: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_join)
// FirebaseAuth 인스턴스를 초기화
auth = Firebase.auth
// activity_join 레이아웃에서 joinBtn 버튼을 찾아 joinBtn 변수에 할당
val joinBtn = findViewById<Button>(R.id.joinBtn)
// joinBtn에 클릭 리스너를 설정
joinBtn.setOnClickListener {
// activity_join 레이아웃에서 emailArea와 passwordArea EditText를 찾아 email과 password 변수에 할당
val email = findViewById<EditText>(R.id.emailArea)
val password = findViewById<EditText>(R.id.passwordArea)
// FirebaseAuth를 사용하여 이메일과 비밀번호로 새로운 사용자 생성
auth.createUserWithEmailAndPassword(email.text.toString(), password.text.toString())
.addOnCompleteListener(this) { task ->
// 사용자가 성공적으로 생성된 경우
if (task.isSuccessful) {
// MainActivity로 전환하기 위한 Intent 생성
val intent = Intent(this, MainActivity::class.java)
// MainActivity를 시작
startActivity(intent)
} else {
// 사용자가 생성되지 않은 경우 오류 로그 출력
Log.w("JOINActivity", "createUserWithEmail:failure", task.exception)
}
}
}
}
}