用户Firebase Phone Auth

时间:2017-08-21 18:20:37

标签: android firebase firebase-authentication

是否可以使用Phone Auth来验证电话号码?我的用户已经与其他提供商登录。我只需要确保他们输入的号码有效。

2 个答案:

答案 0 :(得分:0)

您可以使用Firebase的PhoneAuthProvider执行此操作,该活动将向用户电话号码发送一次性密码短信。

本文档中给出了实现:Firebase phone authentication

答案 1 :(得分:0)

让我们说,如果不使用手动验证在Firebase中创建与该号码链接的新用户,则无法验证电话号码 但是您可以通过以下方式立即取消手机与用户帐户的链接:

FirebaseAuth.getInstance().getCurrentUser().
                            unlink(PhoneAuthProvider.PROVIDER_ID)
                            .addOnCompleteListener(this);

就像:

    final PhoneAuthCredential credential = PhoneAuthProvider.getCredential(mVerificationId, scode);

    mAuth.signInWithCredential(credential).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if (task.isSuccessful()) {

                FirebaseAuth.getInstance().getCurrentUser().
                        unlink(PhoneAuthProvider.PROVIDER_ID)
                        .addOnCompleteListener(this);

                register_user(sname,semail,sphone,scode, spass); // this if you wanna register with a different method
            }
        }
    });

并且可以自动验证Google Play服务(在新手机中)。当您的onVerificationCompleted(PhoneAuthCredential)中的PhoneAuthProvider.OnVerificationStateChangedCallbacks被调用时。并且在这里,验证无需用户输入任何内容即可完成,并且电话不会链接到新的用户帐户。

PhoneAuthProvider.getInstance().verifyPhoneNumber(sphone, 60, TimeUnit.SECONDS, AuthActivity.this, new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
    @Override
    public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
        register_user(sname,semail,sphone,scode, spass); // this if you wanna register with a different method
    }

    @Override
    public void onVerificationFailed(FirebaseException e) {

    }

    @Override
    public void onCodeSent(String verificationId, PhoneAuthProvider.ForceResendingToken token) {



        // Save verification ID and resending token so we can use them later
        mVerificationId = verificationId;
        mResendToken = token;

        // ...
    }

});

我认为Google应该允许开发人员在不创建用户帐户的情况下验证电话,这会很有帮助