如何从JSON数据获取access_token

时间:2019-07-26 05:26:06

标签: node.js json api

我正在尝试从REST API调用中获取public String authenticateAD() { logger.debug("Start authenticateAD=" + System.currentTimeMillis()); setPage("login"); setRole("login"); boolean validate = true; userId = getServletRequest().getRemoteUser(); if (userId == null) { return "error"; } if (userId.lastIndexOf("\\") > 0) { userId = userId.substring(userId.lastIndexOf("\\") + 1).trim(); } logger.debug("UserId=" + userId); if (validate) { LDAPIntegration authentication = new LDAPIntegration(); String group = ""; try { List<String> groupList = new ArrayList(); groupList = authentication.getUserGroups(userId); String role = ""; if ((groupList != null) && (!groupList.isEmpty())) { List<String> interList = new ArrayList<String>(); for (int i = 0; i < groupList.size(); i++) { group = groupList.get(i); logger.info("groupList group:" + group); StringTokenizer st = new StringTokenizer(group); while (st.hasMoreTokens()) { if (st.countTokens() == 1) { interList.add(st.nextToken()); } else { st.nextToken(); } } } Collections.sort(interList); logger.info("Sorted InnerList of Role: " + interList.toString()); if (interList.contains("Administrators")) role = "Administrators"; else if (interList.contains("Operators")) role = "Operators"; else if (interList.contains("Guests") && interList.size() == 1) role = "Guests"; else for (int j = 0; j < interList.size(); j++) { if (!interList.get(j).equalsIgnoreCase("Guests")) role = interList.get(j); } for (int k = 0; k < groupList.size(); k++) { if (!groupList.get(k).contains("Administrators") || !groupList.get(k).contains("Operators") || !groupList.get(k).contains("Guests")) group = groupList.get(k); } /* group = (String)groupList.get(0); */ logger.debug("groupList group:" + group); /* * StringTokenizer st = new StringTokenizer(group); while (st.hasMoreTokens()) { * if (st.countTokens() == 1) { role = st.nextToken(); } else { st.nextToken(); * } } */ } else { throw new CustomException("INVALID_USER"); } if (!role.toLowerCase().equalsIgnoreCase("Administrators".toLowerCase())) if (!role.toLowerCase().equalsIgnoreCase("Operators".toLowerCase())) if (!role.toLowerCase().equalsIgnoreCase("Guests".toLowerCase())) { if (group.toLowerCase().indexOf("area manager".toLowerCase()) != -1) { String areaName = null; List<String> areaNameList = new ArrayList(); for (int i = 0; i < groupList.size(); i++) { group = (String) groupList.get(i); if (group.toLowerCase().indexOf("area manager".toLowerCase()) != -1) { logger.debug("areamanager groupList group:" + group); if (group.toLowerCase().contains("area manager-")) { areaName = group .substring(group.indexOf("Download Area") + 14, group.length()) .trim(); } else { areaName = group .substring(group.indexOf("Area Manager") + 12, group.length()) .trim(); } logger.info("areaName:" + areaName); if (areaName != null) { areaNameList.add(areaName); } } } logger.debug("areaNameList===" + areaNameList); setArea(areaNameList); role = "area manager"; } else { throw new CustomException("INVALID_ROLE"); } } setUserGroup(groupList); logger.info("authenticateAD groupList: " + groupList); logger.info("authenticateAD Role: " + role); logger.info("authenticateAD userId: " + userId); setRole(role); setUser(userId); logger.info("Get Methods in authenticateAD !!"); logger.info("authenticateAD Role: " + getRole()); logger.info("authenticateAD user: " + getUser()); logger.info("authenticateAD userId: " + getUserId()); logger.info("authenticateAD group List: " + getUserGroup().toString()); logger.debug("Get Methods in authenticateAD !!"); logger.debug("authenticateAD Role: " + getRole()); logger.debug("authenticateAD user: " + getUser()); logger.debug("authenticateAD userId: " + getUserId()); logger.debug("authenticateAD group List: " + getUserGroup().toString()); logger.debug("End authenticateAD=" + System.currentTimeMillis()); return "success"; } catch (CustomException e) { logger.error("error in authenticateAD ", e); if (e.getMessage().equalsIgnoreCase("NETWORK_ERROR")) { addActionError(manager.getValue("login.network.error")); } else if (e.getMessage().equalsIgnoreCase("INVALID_USER")) { addActionError(manager.getValue("login.invalid.user")); } else if (e.getMessage().equalsIgnoreCase("INVALID_ROLE")) { addActionError(manager.getValue("login.invalid.role")); } } } return "error"; } ,能够获取整个JSON响应,但是无法访问access_tokenaccess_token来使用它们。

refresh_token
  

'accessToken'未定义,即无法获取值

请提出建议

2 个答案:

答案 0 :(得分:2)

不知道您的body到底是什么,因此猜测它是OAuth响应。 JSON.stringify用于将已制成的JSON对象解析为字符串(如在锡罐上所说),因此使用错误。您应该使用JSON.parse

答案 1 :(得分:0)

以防万一它可能对某人有所帮助:

var response = await apiCall.json(); // Random API query
var token = (JSON.parse(response)).access_token; //Parse the token from the response as Pavel suggested
相关问题