Firebase通过电子邮件和电话进行验证

时间:2018-10-20 09:49:44

标签: android firebase firebase-authentication

对于某个区域,我想同时注册和验证我的用户:

他的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()) { }

但是我该如何检查我的具有链接凭据(从电子邮件到电话)的用户是否同时验证了这两者?

1 个答案:

答案 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();
     }
}