我有一个经过身份验证的用户列表,我希望Firebase仅在该电子邮件ID未使用或我的Firebase数据库中不存在时才接受电子邮件ID。
在提出这个问题之前我搜索了答案,但我见过的那些都没有帮助我解决这个问题。
我正在使用Google进行身份验证,我将电子邮件存储在Firebase中“Authenticated-Users”。
这也给我带来了第二个问题:当我退出然后使用同一个用户重新登录时,电子邮件ID会重复并添加到Firebase试。
答案 0 :(得分:1)
我希望Firebase接受,只有当emailId未被使用或Firebase数据库中不存在时才会接受。
当您使用Firebase提供的任何方法(电子邮件,Google ..)进行身份验证时,用户注册后,该电子邮件将位于Firebase控制台中。因此,如果电子邮件位于控制台中,那么如果其他用户尝试使用该电子邮件进行注册,则他们无法通过已验证的控制台进行注册。
这是通过Firebase身份验证完成的(因此您不必这样做)。
您可以在注册时使用此Toast
进行测试:
Toast.makeText(LoginActivity.this, "User Authentication Failed: " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
它会显示错误(示例电子邮件存在)。
检查数据库中是否存在电子邮件:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Authenticated-Users");
ref.orderByChild("email").equalTo(anemailhere).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});