Firebase를 사용한 사용자 인증
Firebase로 사용자를 인증하려면 클라이언트 애플리케이션이 HTTP 요청의 승인 헤더에 있는 JSON 웹 토큰(JWT)을 백엔드 API로 전송해야 한다. API 게이트웨이가 사용자의 API 대신 토큰을 검증하므로 인증 처리를 위해 API에 코드를 추가할 필요가 없지만 선택한 인증 방법을 지원하도록 게이트웨이에 대해 API 구성을 설정해야 한다.
// 수정 필요
Firebase Authentication
Firebase는 Authentication으로 회원가입과 로그인 관리를 쉽게 할 수 있다.
-> 이메일 로그인, 구글 로그인, 전화 등 다양한 방법을 지원한다.
1. Sign-in method 설정
이메일/비밀번호를 활성화


2. Firebase Auth 관련 dependency를 추가
implementation platform('com.google.firebase:firebase-bom:26.2.0')
implementation 'com.google.firebase:firebase-auth-ktx'
3. FirebaseAuth.getInstance()를 통해 인스턴스를 생성
이후 createUserWithEmailAndPassword() 함수를 사용하여 회원가입을 진행
진행 결과는 addOnCompleteListener와 addOnFailureListener를 통해 획득 가능
class SignInActivity : AppCompatActivity() {
private var _binding: SignInActivityBinding? = null
private val binding get() = _binding!!
private lateinit var auth: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
_binding = SignInActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
auth = FirebaseAuth.getInstance()
binding.btnSignIn.setOnClickListener {
val email = binding.edtEmail.text.toString().trim()
val password = binding.edtPassword.text.toString().trim()
// Validate...
createUser(email, password)
}
}
private fun createUser(email: String, password: String) {
auth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener { task ->
if (task.isSuccessful) {
Toast.makeText(this, "회원가입 성공", Toast.LENGTH_SHORT).show()
val user = auth.currentUser
updateUI(user)
} else {
Toast.makeText(this, "회원가입 실패", Toast.LENGTH_SHORT).show()
updateUI(null)
}
}
.addOnFailureListener {
Toast.makeText(this, "회원가입 실패", Toast.LENGTH_SHORT).show()
}
}
private fun updateUI(user: FirebaseUser?) {
user?.let {
binding.txtResult.text = "Email: ${user.email}\nUid: ${user.uid}"
}
}
override fun onDestroy() {
super.onDestroy()
_binding = null
}
}