我正在尝试从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_token
或access_token
来使用它们。
refresh_token
'accessToken'未定义,即无法获取值
请提出建议
答案 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