概述
今天开始准备调用极光推送的REST API发现报了很多错。postman和idea都试过了
报错1: post请求接口,返回{"code":9010,"content":"missing auth"}
出这个错,请仔细查看官方文档https://docs.jiguang.cn/jverification/server/rest_api/rest_api_summary/
鉴权方式
极光 REST API采用 HTTP 基本认证的验证方式。基本做法为,HTTP Header 中加 Authorization:
Authorization: Basic ${base64_auth_string}
Header 名称是 "Authorization", 值是 base64转换过的 "appKey:masterSecret"(中间有个冒号)。这两者可以在极光开发者服务的Web控制台[应用设置]-[应用信息]中查看。
报错2:
{
"code": 9011,
"content": "auth failed"
}
出现这个错误,十有八九是你通过postMan请求,把Authorization放到header里面了。。。具体的做法如图
而不是直接在headers里面加个Content-Type:application/json
Authorization Basic MDQzNDdkNDU5Y2QwODZhOTFjNWRlNjU1OjY5YThmODM4ZGV-----------------------
官方给出的解释是:文档里面提供的方式是restapi的方式,postmen是封装好了的
post此时应该可以请求了。
那么java代码怎么写呢?
/**
* @Description 极光推送专用post
* @Author PrinceCharmingDong
* @Date 2020/3/4
*/
public static String doPostForJpush (String url, String JSONBody,String appKey,String masterKey) {
CloseableHttpResponse response = null;
CloseableHttpClient httpClient = null;
String responseContent = "";
try {
httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader("Content-Type", "application/json");
httpPost.addHeader("Authorization", "Basic " + Base64.getUrlEncoder()
.encodeToString((appKey+ ":" + masterKey).getBytes()));
httpPost.setEntity(new StringEntity(JSONBody));
response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
responseContent = EntityUtils.toString(entity, "UTF-8");
response.close();
httpClient.close();
System.out.println(responseContent);
} catch (ClientProtocolException e) {
log.error(e);
} catch (IOException e) {
log.error(e);
} finally {
close(response, httpClient);
}
return responseContent;
}
private static void close(Closeable... closeables) {
if (closeables != null && closeables.length > 0) {
try {
for (Closeable closeable : closeables) {
if (closeable != null) {
closeable.close();
}
}
} catch (IOException e) {
log.error(e);
}
}
}
JSONBody是
{
"loginToken":"v3NMGQPG4x7XkKDEazzhJHoY-JdZfilhodyW5bV2U8C8pUxoCRnRoi3lkUQKjUJKD31pxPJRcO2PEdGEs04jRRbC3kHdDl5tLkACD-_I_NtcMOsEXtl3e7xnz8KpcxracnX_iXI6CPIJ5wBY9WfYaPtp30zdEy7ffcOk2F5NyWFKeup1y1k4s8aWsfGulFffE8Mzd7uQMmjCaYBm9x-------------"
}
这样子的。
至于请求返回的数据怎么处理,你应该会将 json 字符串转为 java bean,然后获取里面的内容。此处不过多赘述
报错3:
{
"id": 287637091930615808,
"code": 9003,
"content": "token expired or not exist",
"exID": null,
"phone": null
}
这个很明显了,loginToken是一次性的,用了就没了,叫客户端再给个loginToken给你。
最后
以上就是活泼爆米花为你收集整理的关于极光鉴权认证一键登录请求接口的3个相关问题的解决方案报错1: post请求接口,返回{"code":9010,"content":"missing auth"}报错2:报错3:的全部内容,希望文章能够帮你解决关于极光鉴权认证一键登录请求接口的3个相关问题的解决方案报错1: post请求接口,返回{"code":9010,"content":"missing auth"}报错2:报错3:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复