Firebase电话身份验证:不调用onCodeSent

时间:2019-03-22 18:53:08

标签: android firebase-authentication

我的代码:

PhoneAuthProvider.getInstance().verifyPhoneNumber(
            phoneNumber,        // Phone number to verify
            60,                 // Timeout duration
            TimeUnit.SECONDS,   // Unit of timeout
            this,               // Activity (for callback binding)
            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);

                    otpSent = s;
                    Log.d("AuthTest", "code sent!");
                }
            });     

在此以国际格式输入电话号码(印度为+91,十位数字)。在此,如果用户选择了自己选择的有效电话号码,则不会调用onCodeSent。另一方面,如果我转到Firebase控制台并输入电话号码进行测试, enter image description here onCodeSent被执行。

我正在关注YouTube教程here。许多人向该开发人员询问了相同的问题“未收到OTP(即验证码)”。作者未回复。

这是怎么回事? Firebase是否进行了任何更改或对免费帐户设置了限制,或者我缺少什么?

1 个答案:

答案 0 :(得分:1)

问题是在Firebase中注册该应用程序。软件包名称和SHA-1密钥是必需的。我是通过@Tamir Abutbul建议在FirebaseException回调中截获onVerificationFailed才知道的。注册该应用后,它便开始工作。

此外,当我尝试在其他Mac上从其他Android Studio环境运行该应用程序时,再次出现了应用程序注册问题。这次它告诉我我之前输入的SHA-1密钥不是来自此mac。因此,我必须生成另一个密钥并添加它(可以添加多个密钥)。