我的代码:
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控制台并输入电话号码进行测试, onCodeSent被执行。
我正在关注YouTube教程here。许多人向该开发人员询问了相同的问题“未收到OTP(即验证码)”。作者未回复。
这是怎么回事? Firebase是否进行了任何更改或对免费帐户设置了限制,或者我缺少什么?
答案 0 :(得分:1)
问题是在Firebase中注册该应用程序。软件包名称和SHA-1密钥是必需的。我是通过@Tamir Abutbul建议在FirebaseException
回调中截获onVerificationFailed
才知道的。注册该应用后,它便开始工作。
此外,当我尝试在其他Mac上从其他Android Studio环境运行该应用程序时,再次出现了应用程序注册问题。这次它告诉我我之前输入的SHA-1密钥不是来自此mac。因此,我必须生成另一个密钥并添加它(可以添加多个密钥)。