먼저 파이어베이스와 안드로이드 스튜디오를 연동해준뒤 build.gradle(Project)에 들어가서 아래코드를 작성해준다
dependencies{
classpath("com.google.gms:google-services:4.4.0")
}
build.gradle(Project)
그리고 build.gradle(app)에서 아래 코드를 등록해주면 파이어베이스와 연동은 완료된다
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("com.google.gms.google-services")
}
dependencies {
...
implementation("com.google.firebase:firebase-analytics-ktx:21.5.0")
implementation(platform("com.google.firebase:firebase-bom:32.3.1"))
}
build.gradle(app)
그 다음엔 파이어베이스 Authenication에 들어가서 이메일/비밀번호, 익명을 활성화해준다
익명을 활성화시켜주는 이유는 비회원 로그인에 이용하기위해서이다
build.gradle(app)에 파이어베이스 인증을 위해 아래코드를 더 추가해준다
dependencies {
...
implementation("com.google.firebase:firebase-auth-ktx")
}
build.gradle(app)
# 회원가입 기능추가
그다음에 JoinActivity로 가서 파이어베이스 공식문서에 나와있는데로 FirebaseAuth의 인스턴스를 선언하고,
onCreate() 메서드에서 FirebaseAuth 인스턴스를 초기화한다
package com.example.mysololife.auth
class JoinActivity : AppCompatActivity() {
private lateinit var auth : FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_join)
auth = Firebase.auth
auth.createUserWithEmailAndPassword("abc@abc.com", "abcdabcd")
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
Toast.makeText(this, "성공", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "실패", Toast.LENGTH_SHORT).show()
}
}
}
}
JoinActivity.kt
이렇게 해주고 회원가입버튼을 누르면 파이어베이스 Authenication에 아래와같이 사용자가 등록이 되는걸 볼수있다
이제는 내가 입력한 이메일과 비밀번호로 파이어베이스에 등록하고싶기때문에 코드를 수정해준다
조건도 몇가지 추가해줬고 아래와같이 코드를 수정해줬다
package com.example.mysololife.auth
class JoinActivity : AppCompatActivity() {
private lateinit var auth : FirebaseAuth
private lateinit var binding : ActivityJoinBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
auth = Firebase.auth
binding = DataBindingUtil.setContentView(this, R.layout.activity_join)
binding.joinBtn.setOnClickListener {
var isGoToJoin = true
// 사용자가 입력한 "이메일,비밀번호,비밀번호확인" 받아오기
val email = binding.emailArea.text.toString()
val password1 = binding.passwordArea1.text.toString()
val password2 = binding.passwordArea2.text.toString()
// 값이 비어있을때
if (email.isEmpty()){
Toast.makeText(this, "이메일을 입력해주세요", Toast.LENGTH_SHORT).show()
isGoToJoin = false
}
if(password1.isEmpty()){
Toast.makeText(this, "password를 입력해주세요", Toast.LENGTH_SHORT).show()
isGoToJoin = false
}
if(password2.isEmpty()){
Toast.makeText(this, "password를 입력해주세요", Toast.LENGTH_SHORT).show()
isGoToJoin = false
}
// password1과 password2가 같은지 확인
// 같지 않으면
if(!password1.equals(password2)){
Toast.makeText(this, "비밀번호를 똑같이 입력해주세요", Toast.LENGTH_SHORT).show()
isGoToJoin = false
}
// 비밀번호가 6자 이상으로
if (password1.length < 6) {
Toast.makeText(this, "password를 6자리 이상으로 입력해주세요", Toast.LENGTH_SHORT).show()
isGoToJoin = false
}
// isGoToJoin이 true이면 해당 코드 실행
if(isGoToJoin) {
auth.createUserWithEmailAndPassword(email, password1)
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
Toast.makeText(this, "성공", Toast.LENGTH_SHORT).show()
// MainActivity로 이동
val intent = Intent(this, MainActivity::class.java)
// MainActivity에서 뒤로가기 눌렀을때 회원가입창 안나오도록(기존 엑티비티 날려버림)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
startActivity(intent)
} else {
Toast.makeText(this, "실패", Toast.LENGTH_SHORT).show()
}
}
}
}
}
}
JoinActivity.kt
이렇게 코드를 짜주면 내가 입력한 이메일,비밀번호로 파이어베이스에 등록이되고, MainActivity에서 이전버튼을 눌렀을때 다시 회원가입창으로 오는게 아니라 앱이 아얘 나가지는것을 확인할수있다
# 로그인 기능추가
이제 로그인 기능을 추가해볼것이다
회원가입에서 했던것과 똑같이 FirebaseAuth의 인스턴스를 선언하고 onCreate() 메서드에서 FirebaseAuth 인스턴스를 초기화해준뒤 아래와같이 코드를 작성해준다
package com.example.mysololife.auth
class LoginActivity : AppCompatActivity() {
private lateinit var auth : FirebaseAuth
private lateinit var binding : ActivityLoginBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
auth = Firebase.auth
binding = DataBindingUtil.setContentView(this,R.layout.activity_login)
binding.loginBtn.setOnClickListener {
// 사용자가 입력한 이메일,비밀번호 받아오기
val email = binding.emailArea.text.toString()
val password = binding.passwordArea.text.toString()
// 로그인
auth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this) { task ->
val intent = Intent(this, MainActivity::class.java)
//기존 엑티비티 날려버림
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
startActivity(intent)
if (task.isSuccessful) {
Toast.makeText(this, "로그인 성공", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "로그인 실패", Toast.LENGTH_SHORT).show()
}
}
}
}
}
LoginActivity.kt
이렇게하면 로그인 기능까지 완료가 된것을 확인할수있다
# 비회원 가입
마지막으로 비회원가입 기능까지 해보겠다
IntroActivity로 가서 회원가입 버튼 클릭시, 비회원가입에 성공하면 MainActivity로 이동하고 실패하면 토스트 메시지를 띄우도록 했다. IntroActivity에 아래 코드를 추가해주자
// 비회원가입 버튼 클릭시
binding.noAccountBtn.setOnClickListener {
// 익명 로그인
auth.signInAnonymously()
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
// MainActivity로 이동
val intent = Intent(this, MainActivity::class.java)
//기존 엑티비티 날려버림
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
startActivity(intent)
} else {
Toast.makeText(this, "익명 로그인 실패", Toast.LENGTH_SHORT).show()
}
}
}
IntroActivity.kt
이렇게하면 회원가입,로그인,비회원가입의 기능이 구현되는것을 볼수있다
'Android Project' 카테고리의 다른 글
[Android/Kotlin] 커뮤니티앱(4) - 꿀팁 페이지 만들기 (0) | 2024.01.28 |
---|---|
[Android/Kotlin] 커뮤니티앱(3) - 로그인유무에 따른 엑티비티 전환 ,하단네비게이션바 설정 (0) | 2024.01.28 |
[Android/Kotlin] 커뮤니티앱 (1) - 스플래시, 회원가입, 로그인 디자인 (0) | 2024.01.28 |
[Android/Kotlin] FLO앱 클론코딩(4) - 생명주기 (0) | 2024.01.05 |
[Android/Kotlin] FLO앱 클론코딩(3) - Splash화면 (0) | 2024.01.05 |