Firebase Authentication でユーザを作成し、Realtime databaseにユーザ情報を格納する方法のメモ。
■手順
1, Authentication にユーザ情報を登録する。
2, Realtime databaseにユーザ情報を格納する。
・RegisterActivity.kt
class RegisterActivity: AppCompatActivity() {
private lateinit var auth: FirebaseAuth
private lateinit var database: DatabaseReference
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_register)
auth = Firebase.auth
setup()
}
private fun setup() {
button_register.setOnClickListener {
val email = editText_email.text.toString()
val password = editText_password.text.toString()
if (email.isEmpty() || password.isEmpty()) {
Toast.makeText(this, "メールアドレス または パスワードが未入力です", Toast.LENGTH.SHORT).show()
return
}
// Authentication にユーザ情報を登録。
auth.createUserWithEmailAndPasswrod(email, password)
.addOnComplateListener {
if (!it.isSuccessful) return@addOnCompleteListener
// ユーザー情報を登録すると、FirebaseAuthにユーザーUIDが格納される
val uid = auth.uid ?: ""
database = Firebase.database.getReference("/users/$uid")
// Realtime databasenにユーザー情報を格納する。
val user = User(uid, email, password)
database.setValue(user)
.addOnSuccessListener {
startActivity( Intent(this, DashboardActivity::class.java) )
}
.addOnFailureListener {
Toast.makeText(this, "ユーザー情報の登録に失敗しました: ${it.message}", Toast.LENGTH_SHORT).show()
}
}
.addOnFailureListener {
Toast.makeText(this, "ユーザー作成に失敗しました: ${it.message}", Toast.LENGTH.SHORT).show()
}
}
}
}
ログイン処理
private fun login() {
button_login.setOnClickListener {
val email = editText_email_login.text.toString()
val password = editText_password_login.text.toString()
if (email.isEmpty() || password.isEmpty()) {
Toast.makeText(this, "メールアドレス または パスワード が未入力です", Toast.LENGTH_SHORT).show()
return
}
auth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener {
if (!it.isSuccessful) return @addOnCompleteListener
startActivity( Intent(this, DashboardActivity::class.java) )
}
}
}
ログアウト処理
private fun logout() {
auth.signOut()
// finish()
startActivity( Intent(this, LoginActivity::class.java) )
}