플러터,안드로이드를 공부하면서 파이어베이스를 몇번 사용해 보았는데 사용할때마다 까먹어서 찾아보게 되어서 한번 정리를 하는게 좋다고 생각해서 이번에는 firebase의 인증 기능인 Authentication에 대해 정리를 할 것이다.
Firebase는 Google에서 제공하는 개발 플랫폼으로, 모바일과 웹 애플리케이션 개발에 필요한 다양한 도구와 서비스를 제공한다. Firebase를 사용하면 개발자들은 서버 인프라를 직접 관리하지 않고도 애플리케이션의 백엔드 기능을 구현할 수 있다. Firebase Authentication(Firebase Auth)은 사용자의 인증을 간편하게 관리하고 구현할 수 있도록 도와주는 서비스로써 다양한 인증 방법을 제공하며, 안전하고 확장 가능한 인증 시스템을 구축할 수 있게 한다.
id("com.google.gms.google-services") version "4.4.2" apply false
app의 build.gradle.kts안에 라이브러리 추가
// plugin {
id("com.google.gms.google-services")
}
//
dependencies {
implementation(platform("com.google.firebase:firebase-bom:33.1.1"))
implementation("com.google.firebase:firebase-analytics")
implementation("com.google.firebase:firebase-auth-ktx") // firebase의 authentication을 사용하기 위함
}
회원가입 버튼을 누르게 되면 firebase authentication에 email과 password를 저장하면서 AuthResultActivity로 넘어가는 로직이다.
class JoinActivity : AppCompatActivity() {
private lateinit var auth: FirebaseAuth
private lateinit var binding : ActivityJoinBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_join)
auth = Firebase.auth
binding = DataBindingUtil.setContentView(this,R.layout.activity_join)
val email = binding.emailArea
val password = binding.passwordArea
binding.joinBtn.setOnClickListener{
auth.createUserWithEmailAndPassword(email.text.toString(), password.text.toString())
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
Toast.makeText(this,"회원가입 성공",Toast.LENGTH_SHORT).show()
val intent = Intent(this,AuthResultActivity::class.java)
val user = auth.currentUser
startActivity(intent)
} else {
Toast.makeText(this,"회원가입 실패",Toast.LENGTH_SHORT).show()
}
}
}
}
}
앱에서 회원가입을 하게되면 잘 저장되는것을 볼수 있다.
로그인 버튼을 누르게되면 입력한 email과 password를 이용하여 계정을 인증하고 인증이 AuthResultActivity 이동하는 로직이다.
class FireBasePracticeActivity : AppCompatActivity() {
private lateinit var auth: FirebaseAuth
private lateinit var binding : ActivityFireBasePracticeBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_fire_base_practice)
auth = Firebase.auth
binding = DataBindingUtil.setContentView(this,R.layout.activity_fire_base_practice)
val email = binding.emailArea
val password = binding.passwordArea
binding.loginBtn.setOnClickListener{
auth.signInWithEmailAndPassword(email.text.toString(), password.text.toString())
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
Toast.makeText(this,"로그인 성공", Toast.LENGTH_LONG).show()
val intent = Intent(this,AuthResultActivity::class.java)
startActivity(intent)
} else {
Toast.makeText(this,"로그인 실패", Toast.LENGTH_LONG).show()
}
}
}
binding.joinBtn.setOnClickListener{
val intent = Intent(this,JoinActivity::class.java)
startActivity(intent)
}
}
}
현재 로그인 되어있는 계정을 로그아웃 시키고 FireBasePracticeActivity로 이동하는 코드이다. 또한, auth.currentUser를 이용하면 현재 로그인 되어있는 계정에대한 정보를 가져올수 있다.
class AuthResultActivity : AppCompatActivity() {
private lateinit var auth : FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_auth_result)
auth = FirebaseAuth.getInstance()
findViewById<TextView>(R.id.currentUserEmailArea).text = auth.currentUser?.email.toString()
findViewById<Button>(R.id.logoutBtn).setOnClickListener{
auth.signOut()
val intent = Intent(this,FireBasePracticeActivity::class.java)
startActivity(intent)
}
}
}
플러터 개발 당시에는 백엔드 개발자들이 있었기 때문에 파이어베이스를 사용할 기회가 많지 않았다. 하지만 안드로이드를 처음부터 공부하면서 파이어베이스에 대해 깊이 있게 공부할 수 있었다. 파이어베이스는 다양한 편리한 기능들을 제공하며, 특히 인증 시스템을 손쉽게 구현할 수 있도록 도와준다. 이 경험을 통해 파이어베이스의 장점과 그 활용 가능성을 더욱 명확하게 이해하게 되었다. 앞으로도 파이어베이스를 인증 기능 뿐만이 아니라 파이어 베이스의 여러가지 기능을 사용해보며 정리해 보도록 할 것이다.