Apiexception与状态代码7发生由于网络错误,但这似乎并不是问题,因为互联网在设备上工作正常.
代码片段-
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());
}
}
});
4条答案
按热度按时间6jjcrrmo1#
问题出在我的API密钥上。我使用的是同事的API密钥,该密钥受到限制。使用我自己的API密钥解决了这个问题。
hgc7kmma2#
我的问题是我从游戏机注册了SHA1,但在我的Android Studio中没有注册SHA1。
6yt4nkrj3#
当超出Safetynet API配额时,我们会出现此错误。默认配额为每天10_000个请求,午夜重置。
a11xaf1n4#
将
com.google.android.gms:play-services-safetynet
依赖于应用程序的构建降级。gradle从18.0.1
到18.0.0
为我修复了它。仍然要仔细检查你的API密钥限制(SHA1,包名),因为如果它们有问题,它们也可能导致这个错误,但是降级API一个缺口为我修复了它。
此外,仔细检查您是否正确地从密钥文件中阅读APK密钥,尝试将API密钥作为String硬编码到类中,看看它是否有效,当然不要在生产代码中这样做,您必须在发布中隐藏API密钥。