使用安全网认证API时,android中的ApiException状态代码为7



由于网络错误而发生状态代码为7的Apiexception,但这似乎不是问题所在,因为互联网在设备上运行良好。

代码片段-

SafetyNet.getClient(this).attest(nonce, API_KEY)
.addOnSuccessListener(this,
new OnSuccessListener<SafetyNetApi.AttestationResponse>() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onSuccess(SafetyNetApi.AttestationResponse response) {
mResult = response.getJwsResult();
Log.i(TAG, "safetynet result is" + mResult + "n");
mainres = initialDataExtraction(response.getJwsResult());
Log.i(TAG, "Main result is" + mainres + "n");
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
if (e instanceof ApiException) {
ApiException apiException = (ApiException) e;
int statuscode = apiException.getStatusCode();
Log.i(TAG,"EXCEPTION CODE: "+statuscode);
} else {
Log.d(TAG, "Error: " + e.getMessage());
}
}
});

问题出在我的API密钥上。我正在使用一位同事的API密钥,该密钥受到限制。使用我自己的API密钥,它工作得很好。

我的问题是我从游戏控制台注册了SHA1,但没有在我的android工作室注册SHA1。

当超过Safetynet API配额时,我们会出现此错误。默认配额为每天10_000个请求,在午夜重置。

com.google.android.gms:play-services-safetynet对应用程序build.gradle的依赖从18.0.1降级为18.0.0为我修复了它。

仍然要仔细检查API密钥限制(SHA1,包名称(,因为如果它们有问题,它们也可能会导致这个错误,但将API降级一个等级为我修复了它。

此外,如果您正确地从密钥文件中读取了APK密钥,请尝试将API密钥硬编码为String并查看它是否有效,当然不要在生产代码中这样做,您必须在发布时隐藏API密钥。

相关内容

  • 没有找到相关文章

最新更新