我正在尝试使用谷歌的SafetyNet
API。我已成功向Google服务器发送了请求并获得了JWS输出。为了将JWS解析为JSON,我将JWS令牌发送到google给出的URL。但由于某种原因,它显示出一些错误。
文档:here
我的排球代码:
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
}
我使用attestationResult
调用从getJWSResult()
获取签名,然后立即将其作为参数发送给该函数。为什么它显示它不是有效的签名。