我正在进行firebase电话身份验证,收到我电话号码上的代码后,代码跳转到verifysignincode()
方法,无法创建phoneAuthCredentials
。程序捕获的异常是"没有verificationProof
、sessionInfo
、临时证明或注册ID,无法创建PhoneAuthCredential
"。
这是我的发送代码方法:
public void send_code(){
mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onCodeSent(@NonNull String s, @NonNull PhoneAuthProvider.ForceResendingToken forceResendingToken) {
super.onCodeSent(s, forceResendingToken);
Log.d("code", "onCodeSent:" + s);
verificationID=s;
}
@Override
public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) {
}
@Override
public void onVerificationFailed(@NonNull FirebaseException e) {
Toast.makeText(PhoneAuthentication.this, e.getMessage(), Toast.LENGTH_SHORT);
}
};
mPhoneAuthProvider.verifyPhoneNumber(
user_contact , 60, TimeUnit.SECONDS, PhoneAuthentication.this, mCallbacks
);}
这是我的验证登录方法:
public void verifySignInCode(String code){
try {
PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationID, code);
signInWithPhoneAuthCredential(credential);
}catch (Exception e){
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
这是我使用电话凭据的登录方法:
private void signInWithPhoneAuthCredential(PhoneAuthCredential credential){
mFirebaseAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
startActivity(new Intent(PhoneAuthentication.this, UserHome.class));
}
else {
Log.d("error:", task.getException().getMessage());
}
}
});
}
错误:
没有verificationProof、sessionInfo、临时证明或注册ID,无法创建PhoneAuthCredential。
7条答案
按热度按时间kuuvgm7e1#
问题:这已经烧了我很长一段时间,经过研究,我知道这是由于手机内存不足或网络连接不足。当您使用验证ID即log. d(TAG,verificationId)维护日志时,它将在verificationId中显示null,根据错误,它说没有验证证明无法创建PhoneAuthCredential,verificationId是我们的验证证明。
解决方案:
1.清除手机缓存,然后重试签名。转到应用信息并清除缓存。
1.还原示例状态
发生的情况是verificationId存储在本地,有时会由于内存不足而丢失。因此,为了解决这种情况,我们必须恢复不会让verificationId丢失的示例状态。
htzpubme2#
Firebase Crashlytics和Play Store发布前测试中也报告了同样的问题,我也在纠结这个问题,但似乎只有当我在Google Play Store上启动应用程序时才会发生,而且它会自动尝试在许多不同的设备上测试应用程序。所以我认为这更多的是测试过程中的问题。这种情况似乎不会发生在任何真实的的用户身上。不过我可能错了。我只是在启动应用程序并通过测试阶段时才注意到这些错误的峰值,其余时间,没有报告此类错误。
nzkunb0c3#
将此添加到依赖项
webghufk4#
在我的情况下,一些其他设备工作正常,所以当我创建日志。我得到'verificationId'是空的,没有verificationId或令牌,我们得到这个问题。所以首先我浪费了这么多时间寻找解决方案。我读了完整的官方文档。最后当我改变我的网络从wifi到移动的数据然后它工作。
svujldwt5#
我有同样的问题,一些电话号码和其他号码工作正常。
要解决此问题,请删除应用数据和缓存,然后重新启动手机。
yzxexxkh6#
添加你的SHA代码到你的项目中。如果已经完成了,用最近的一个再做一次。它对我很有效。
e0bqpujr7#
错误应来自此行(在验证登录方法中):
电话验证凭证凭证=电话验证提供者.getCredential(验证ID,代码);
如果“verificationID”是全局变量,请尝试将其设为静态。