我正在尝试使用Firebase身份验证构建应用程序,我想使用电子邮件和密码注册,还希望通过Google或Twitter登录。 当用户使用电子邮件和密码注册时,他选择他的显示名称,然后我将其存储到数据库,uid和显示名称。可行,如果用户想再次使用同一封邮件,因为该邮件在数据库中,因此他无法注册,并且成功登录后,我将根据uid获得显示名称。
现在我要添加注册和社交登录,但是没有单独的注册和登录方法。这是否意味着每次用户注册/登录时,我仅读取数据,显示名称并检查其是否在数据库中,是否添加或不添加是否存在?我是否需要检查它是否存在,或者只是尝试再次将其添加到数据库?我计划在数据库中添加其他一些与用户相关的数据,这就是为什么我需要将用户存储在数据库中。
我错过了什么吗?对Firebase身份验证流程有错误的理解?
编辑: 我正在做的是,当用户使用社交帐户登录时,我检查数据是否存在并将其添加。但是,这感觉比添加数据要慢,因此对于许多用户而言,检查实际上会花费很长时间?在每次登录时添加此检查是否正确?
ref.orderByChild("uid").equalTo(uid).addListenerForSingleValueEvent(object : ValueEventListener{
override fun onDataChange(dataSnapshot: DataSnapshot) {
if (!dataSnapshot.exists()) {
//data doesnt exist, put it in DB
}else{
//data exist, do stuff
}
}override fun onCancelled(databaseError: DatabaseError) {
//gone wrong, log error...
}
})