エンジニア男

勉強したことの忘備録としてつらつら書いていきます。

【Android】Firebase Authenticationの使い方②

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) )
}