日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

關(guān)于極光鑒權(quán)認(rèn)證一鍵登錄請求接口的3個相關(guān)問題的解決方案

 看見就非常 2020-05-08

今天開始準(zhǔn)備調(diào)用極光推送的REST API發(fā)現(xiàn)報了很多錯。postman和idea都試過了

 

報錯1: post請求接口,返回{"code":9010,"content":"missing auth"}

出這個錯,請仔細(xì)查看官方文檔https://docs./jverification/server/rest_api/rest_api_summary/

鑒權(quán)方式

極光 REST API采用 HTTP 基本認(rèn)證的驗證方式?;咀龇椋琀TTP Header 中加 Authorization:

   Authorization: Basic ${base64_auth_string} 

Header 名稱是 "Authorization", 值是 base64轉(zhuǎn)換過的 "appKey:masterSecret"(中間有個冒號)。這兩者可以在極光開發(fā)者服務(wù)的Web控制臺[應(yīng)用設(shè)置]-[應(yīng)用信息]中查看。

 

報錯2:

{

  1. "code": 9011,
  2. "content": "auth failed"

}

出現(xiàn)這個錯誤,十有八九是你通過postMan請求,把Authorization放到header里面了。。。具體的做法如圖

而不是直接在headers里面加個Content-Type:application/json

Authorization Basic MDQzNDdkNDU5Y2QwODZhOTFjNWRlNjU1OjY5YThmODM4ZGV-----------------------

官方給出的解釋是:文檔里面提供的方式是restapi的方式,postmen是封裝好了的

post此時應(yīng)該可以請求了。

那么java代碼怎么寫呢?

  1. /**
  2. * @Description 極光推送專用post
  3. * @Author PrinceCharmingDong
  4. * @Date 2020/3/4
  5. */
  6. public static String doPostForJpush (String url, String JSONBody,String appKey,String masterKey) {
  7. CloseableHttpResponse response = null;
  8. CloseableHttpClient httpClient = null;
  9. String responseContent = "";
  10. try {
  11. httpClient = HttpClients.createDefault();
  12. HttpPost httpPost = new HttpPost(url);
  13. httpPost.addHeader("Content-Type", "application/json");
  14. httpPost.addHeader("Authorization", "Basic " + Base64.getUrlEncoder()
  15. .encodeToString((appKey+ ":" + masterKey).getBytes()));
  16. httpPost.setEntity(new StringEntity(JSONBody));
  17. response = httpClient.execute(httpPost);
  18. HttpEntity entity = response.getEntity();
  19. responseContent = EntityUtils.toString(entity, "UTF-8");
  20. response.close();
  21. httpClient.close();
  22. System.out.println(responseContent);
  23. } catch (ClientProtocolException e) {
  24. log.error(e);
  25. } catch (IOException e) {
  26. log.error(e);
  27. } finally {
  28. close(response, httpClient);
  29. }
  30. return responseContent;
  31. }
  32. private static void close(Closeable... closeables) {
  33. if (closeables != null && closeables.length > 0) {
  34. try {
  35. for (Closeable closeable : closeables) {
  36. if (closeable != null) {
  37. closeable.close();
  38. }
  39. }
  40. } catch (IOException e) {
  41. log.error(e);
  42. }
  43. }
  44. }

JSONBody是

{
    "loginToken":"v3NMGQPG4x7XkKDEazzhJHoY-JdZfilhodyW5bV2U8C8pUxoCRnRoi3lkUQKjUJKD31pxPJRcO2PEdGEs04jRRbC3kHdDl5tLkACD-_I_NtcMOsEXtl3e7xnz8KpcxracnX_iXI6CPIJ5wBY9WfYaPtp30zdEy7ffcOk2F5NyWFKeup1y1k4s8aWsfGulFffE8Mzd7uQMmjCaYBm9x-------------"
}

這樣子的。

 

至于請求返回的數(shù)據(jù)怎么處理,你應(yīng)該會將 json 字符串轉(zhuǎn)為 java bean,然后獲取里面的內(nèi)容。此處不過多贅述

報錯3:

{

    "id": 287637091930615808,

    "code": 9003,

    "content": "token expired or not exist",

    "exID": null,

    "phone": null

}

 

這個很明顯了,loginToken是一次性的,用了就沒了,叫客戶端再給個loginToken給你。

 

 

 

 

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約