【问题标题】:Firebase not sending auth code to mobile for mobile verficationFirebase 未向移动设备发送身份验证代码以进行移动验证
【发布时间】:2019-11-06 07:47:03
【问题描述】:
public class MainActivity extends AppCompatActivity  {

EditText editTextPhone, editTextCode;

FirebaseAuth mAuth;

String codeSent;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mAuth = FirebaseAuth.getInstance();

    editTextCode = findViewById(R.id.editTextCode);
    editTextPhone = findViewById(R.id.editTextPhone);

    findViewById(R.id.buttonGetVerificationCode).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            sendVerificationCode();
        }
    });


    findViewById(R.id.buttonSignIn).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            verifySignInCode();
        }
    });
}

private void verifySignInCode(){
    String code = editTextCode.getText().toString();
    PhoneAuthCredential credential = PhoneAuthProvider.getCredential(codeSent, code);
    signInWithPhoneAuthCredential(credential);
}

private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) {
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                       //here you can open new activity
                        Toast.makeText(getApplicationContext(),
                                "Login Successfull", Toast.LENGTH_LONG).show();
                    } else {
                        if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) {
                            Toast.makeText(getApplicationContext(),
                                    "Incorrect Verification Code ", Toast.LENGTH_LONG).show();
                        }
                    }
                }
            });
}

private void sendVerificationCode(){

    String phone = editTextPhone.getText().toString();

    if(phone.isEmpty()){
        editTextPhone.setError("Phone number is required");
        editTextPhone.requestFocus();
        return;
    }

    if(phone.length() < 10 ){
        editTextPhone.setError("Please enter a valid phone");
        editTextPhone.requestFocus();
        return;
    }


    PhoneAuthProvider.getInstance().verifyPhoneNumber(
phone,        // Phone number to verify
                60,                 // Timeout duration
                TimeUnit.SECONDS,   // Unit of timeout
                this,               // Activity (for callback binding)
                mCallbacks);        // OnVerificationStateChangedCallbacks
    }



PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {

    @Override
    public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {

    }

    @Override
    public void onVerificationFailed(FirebaseException e) {

    }

    @Override
    public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
        super.onCodeSent(s, forceResendingToken);

        codeSent = s;
    }
};

}

Firebase 未向手机发送验证码进行验证,请检查问题所在

【问题讨论】:

  • 您是否在控制台中添加了电话号码作为测试电话号码?
  • 日志中有任何错误/警告吗?
  • 没有警告,我没有收到任何 otp
  • 看看thisthis

标签: android firebase firebase-authentication


【解决方案1】:

因为如果您已经注册了一个号码,那么如果您想尝试获取 otp,则第二次不会发送,然后从 firebase auth 中删除一个号码并重试

【讨论】:

  • 我没有添加任何号码并且firebase中的号码列表为空
  • 这需要物理设备还是我可以在模拟器上测试它
  • 请访问这些在 firebase 中启用 phono - prntscr.com/o6j5il
猜你喜欢
  • 1970-01-01
  • 2011-10-27
  • 2018-04-15
  • 2013-10-14
  • 1970-01-01
  • 2020-05-10
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
相关资源
最近更新 更多