【问题标题】:Safetynet Issue Status{statusCode=NETWORK_ERROR, resolution=null}Safetynet 问题状态{statusCode=NETWORK_ERROR, resolution=null}
【发布时间】:2019-07-09 20:13:11
【问题描述】:

我们已经关注Scottyab Safetynet Library

我们正面临“Status{statusCode=NETWORK_ERROR, resolution=null}”事件的错误,尽管我们的 android 设备中的 4G 互联网连接可用,包名称为 com.safetynet.sample 作为示例项目,使用包名称 com.scottyab.safetynet.sample 可以正常工作。我们检查了this solution,但不起作用。

下面的代码我们遇到了这个问题

private void runSafetyNetTest() {
    Log.v(TAG, "running SafetyNet.API Test");
    requestNonce = generateOneTimeRequestNonce();
    requestTimestamp = System.currentTimeMillis();
    writeLog("running SafetyNet.API Test");
    SafetyNet.SafetyNetApi.attest(googleApiClient, requestNonce)
            .setResultCallback(new ResultCallback<SafetyNetApi.AttestationResult>() {
                                   @Override
                                   public void onResult(final SafetyNetApi.AttestationResult result) {
                                       writeLog("running SafetyNet.API Result");
                                   //result = Status{statusCode=NETWORK_ERROR, resolution=null} 
                                       if (!validateResultStatus(result)) {
                                           return;
                                       }

                                       final String jwsResult = result.getJwsResult();
                                       final SafetyNetResponse response = parseJsonWebSignature(jwsResult);
                                       lastResponse = response;
                                       writeLog("Res :: " + response);

                                       //validate payload of the response
                                       if (validateSafetyNetResponsePayload(response)) {
                                           if (!TextUtils.isEmpty(googleDeviceVerificationApiKey)) {
                                               //if the api key is set, run the AndroidDeviceVerifier
                                               AndroidDeviceVerifier androidDeviceVerifier = new AndroidDeviceVerifier(googleDeviceVerificationApiKey, jwsResult);
                                               androidDeviceVerifier.verify(new AndroidDeviceVerifier.AndroidDeviceVerifierCallback() {
                                                   @Override
                                                   public void error(String errorMsg) {
                                                       callback.error(RESPONSE_ERROR_VALIDATING_SIGNATURE, "Response signature validation error: " + errorMsg);
                                                   }

                                                   @Override
                                                   public void success(boolean isValidSignature) {
                                                       if (isValidSignature) {
                                                           callback.success(response.isCtsProfileMatch(), response.isBasicIntegrity());
                                                       } else {
                                                           callback.error(RESPONSE_FAILED_SIGNATURE_VALIDATION, "Response signature invalid");

                                                       }
                                                   }
                                               });
                                           } else {
                                               Log.w(TAG, "No google Device Verification ApiKey defined");
                                               callback.error(RESPONSE_FAILED_SIGNATURE_VALIDATION_NO_API_KEY, "No Google Device Verification ApiKey defined. Marking as failed. SafetyNet CtsProfileMatch: " + response.isCtsProfileMatch());
                                           }
                                       } else {
                                           callback.error(RESPONSE_VALIDATION_FAILED, "Response payload validation failed");
                                       }
                                   }
                               }

            );
}

【问题讨论】:

    标签: android safetynet


    【解决方案1】:

    这可能与证明 API 已被标记为已弃用的事实有关。新的不依赖于谷歌客户端API,你应该检查this。谷歌还发布了一个使用新api的示例应用,您可以查看here

    【讨论】:

    • 我从示例中复制了代码并得到了这个NETWORK_ERROR。可能不是这样的。
    【解决方案2】:

    根据this discussion,错误的API_KEY可能是错误的原因。

    【讨论】:

      猜你喜欢
      • 2017-01-03
      • 2017-03-19
      • 1970-01-01
      • 2017-11-25
      • 2019-08-06
      • 2016-04-25
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多