1

我正在尝试SafetyNet通过谷歌使用 API。我已成功向 google 服务器发送请求并获得 JWS 输出。为了将 JWS 解析为 JSON,我将 JWS 令牌发送到谷歌给出的 URL。但由于某种原因,它显示出一些错误。

文档:这里

我的排球代码:

public void decodeJWS(final String x){
        String URL =  "https://www.googleapis.com/androidcheck/v1/attestations/verify?key="+getResources().getString(R.string.APIKey);
        StringRequest sq = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                result.setText(response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                result.setText(error.toString());
            }
        }){
            @Override
            public String getBodyContentType() {
                return "application/json";
            }


            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                HashMap<String, String> headers = new HashMap<String, String>();
//                headers.put("signedAttestation",x);
                headers.put("Content-Type", "application/json; charset=utf-8");
                return headers;
            }

            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                HashMap<String,String> body = new HashMap<>();
                body.put("signedAttestation",x);
                return body;
            }
        };
        requestQueue.add(sq);
    }

错误消息说 com.android.volley.serverError

日志说BasicNetwork.performRequest: Unexpected response code 400 for https://www.googleapis.com/androidcheck/v1/attestations/verify?key=MyKey

我尝试使用Postman发送相同的请求,但它给了我

{
  "isValidSignature": false
}

作为回应。我相信我已经在我的凌空代码中正确设置了所有标题和内容。这有什么错误吗?

编辑 :

我更新了我的代码以使用JSONObjectRequest. 当我使用它时,没有 400 错误代码,但它返回的内容与 Postman 查询返回的内容相同。

 {
      "isValidSignature": false
    }

我从attestationResultusinggetJWSResult()调用中获取签名,然后立即将其作为参数发送给函数。为什么它显示它不是一个有效的签名。

4

0 回答 0