Android: ответ NetworkNet, проверка устройства проверки ответа, ошибка сети

Я звоню в 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, разрешение = ноль}

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

1 ответ

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

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

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

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

   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

Другие вопросы по тегам