首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android: SafetyNet认证设备验证响应网络错误

Android: SafetyNet认证设备验证响应网络错误
EN

Stack Overflow用户
提问于 2018-12-24 19:27:51
回答 2查看 1.4K关注 0票数 2

我正在使用SafetyNet客户端调用Google Api,但它没有响应正确的响应。

代码语言:javascript
复制
   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.
                    }
                }
            });

我在result方法中得到了下面的错误消息。

状态{statusCode=NETWORK_ERROR,resolution=null}

任何形式的帮助都会受到高度的感谢。

EN

回答 2

Stack Overflow用户

发布于 2019-01-16 10:52:39

这不起作用,因为您使用的是不再支持的SafetyNetApi

从Google Play Services11.0.0开始,您现在应该使用get an API key,并使用SafetyNetClient

您可能还想看看10 things you might be doing wrong when using the SafetyNet Attestation API

票数 0
EN

Stack Overflow用户

发布于 2019-07-22 00:56:35

首先,您必须通过以下方法生成nonce

代码语言:javascript
复制
   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

代码语言:javascript
复制
 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.
                }
            });
        }

参考:Sample Code Offline verification

Sample Code Online verification using google api

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53912841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档