Android: ответ NetworkNet, проверка устройства проверки ответа, ошибка сети - PullRequest
0 голосов
/ 24 декабря 2018

Я звоню в SafetyNet Api с помощью Google Client, но он не отвечает на правильный ответ.

   SafetyNet.SafetyNetApi.attest(mGoogleApiClient, generateNonce())
            .setResultCallback(new ResultCallback<SafetyNetApi.AttestationResult>() {
                @Override
                public void onResult(SafetyNetApi.AttestationResult result) {
                    Status status = result.getStatus();
                    String data = decodeJws(result.getJwsResult());

                    if (status.isSuccess()) {
                        // Indicates communication with the service was successful.
                        // Use result.getJwsResult() to get the result data.
                    } else {
                        // An error occurred while communicating with the service.
                    }
                }
            });

Я получаю сообщение об ошибке ниже в методе результата.

Status {statusCode = NETWORK_ERROR, resolution = null}

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 21 июля 2019

Сначала вы должны сгенерировать одноразовый номер, используя следующий метод

   private static byte[] getRequestNonce() {
    String data = String.valueOf(System.currentTimeMillis());
    ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
    byte[] bytes = new byte[24];
    Random random = new Random();
    random.nextBytes(bytes);
    try {
        byteStream.write(bytes);
        byteStream.write(data.getBytes());
    }catch (IOException e) {
        return null;
    }
    return byteStream.toByteArray();
}

В последующих словах используйте аттестацию клиента безопасности сети API

 SafetyNet.getClient(context).attest(nonce, <API KEY>).addOnSuccessListener(new OnSuccessListener<SafetyNetApi.AttestationResponse>() {
                @Override
                public void onSuccess(SafetyNetApi.AttestationResponse attestationResponse) {
                    // parse response 

                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    // An error occurred while communicating with the service.
                }
            });
        }

Ссылка: Пример проверки кода в автономном режиме

Пример кода Онлайн-проверка с использованием Google API

0 голосов
/ 16 января 2019

Это не работает, потому что вы используете SafetyNetApi, который больше не поддерживается.

Начиная с Google Play Services 11.0.0, вы должны теперь получитьключ API и используйте вместо него SafetyNetClient.

Вы также можете взглянуть на 10 вещей, которые вы могли бы делать неправильно при использовании аттестации SafetyNetAPI .

...