对于某个区域,我想同时注册和验证我的用户:
他的EMAIL地址和他的电话号码。电子邮件和电话通过验证后,我使用以下代码行将EMAIL链接到PHONE:
mAuth.getCurrentUser().linkWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()) {
FirebaseUser user = task.getResult().getUser();
if(config.debugcode) {Log.e("LINKING successful",user.toString());
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplication());
prefs.edit().putBoolean("locked", false).apply();
现在,Firebase让我可以检查EMAIL是否已通过以下代码验证:
if (user.isEmailVerified()) { }
但是我该如何检查我的具有链接凭据(从电子邮件到电话)的用户是否同时验证了这两者?
答案 0 :(得分:0)
使用FirebaseAuth.getInstance().getCurrentUser().sendEmailVerification()
和FirebaseAuth.getInstance().getCurrentUser().isEmailVerified()
这可以让您知道电子邮件是否已通过验证。详细了解Firebase here.
中的电子邮件和电话身份验证也请访问this link,以了解有关如何使用此功能的更多信息。
更新
以上代码可帮助您确定用户是否已验证电子邮件,但目前尚无方法来确定用户是否已验证其电话号码。
为此,您必须手动进行操作,您可以做的是,当您验证OTP并允许用户使用电话号码登录时,可以使用布尔值'true`来更新Json中的一个节点,该节点告诉您,用户已经验证了他的号码。
现在要查看验证其电话号码的用户,您可以运行如下代码:
DatabaseRef userRef = FirebaseDatabase.getInstance.getRef("users");
userRef.orderByChild("phoneVerified").equalTo(true).addListenerForSingleValueEvent(new ValueEventListener() {
if (dataSnapshot.getValue() != null){
//it means user already registered
//Add code to show your prompt
showPrompt();
}else{
//It is new users
//write an entry to your user table
//writeUserEntryToDB();
}
}