저는 스프링 소셜 API에 대해 새로운 데, 페이스 북으로 내 애플리케이션에 로그인하려하지만 내 도메인 URL로 리디렉션하지 않습니다.스프링 소셜 페이스 북의 URL 다른 서버로 리다이렉트
내 애플리케이션은 Ajax 양식이 제출 된 restcontroller를 기반으로하는 두 개의 서버에서 실행됩니다. 하나는 아파치 웹 서버이고 다른 하나는 tomcat 서버입니다.
내 페이스 북 인증은 restcontroller를 기반으로하지 않습니다. 사용자가 페이스 북 ID로 로그인해야하는 경우 페이스 북 버튼으로 로그인을 클릭하면 페이 스북 로그인 페이지로 리디렉션되지만 요청 된 페이지로 다시 리디렉션되지 않습니다. URL.
내 코드는 아래로 : 페이스 북
@RequestMapping와
로그인 (값 = "/ fbauth"방법 = RequestMethod.GET) 공공 무효 fbredirect (@RequestParam지도 requestParams) { (자), UnsupportedEncodingException가 발생합니다 String accessToken = null; // 문자열 accessToken = // "CAAFv5tfCxvsBAMkGz7Mz63ESCLEK3jgZBEZAZBqlj3CApIyqmvA5hOrtl9Ln05O3BRTcx95TjT9IxZBfRz3fKZBjNJ74qko1SFjjzAXmdDnzVePmGXswOM8NHEGTZA6aub7bnZBYBIMO2ZBXX2gpo6ky7Dkqu2xZBUymAalAgg3ixaRQMe3e3w1ruUtVeyQrtMb3x0pehHOIaTQZDZD"; RestTemplate restTemplate = new RestTemplate(); 지도 결과 = null; if (StringUtils.isEmpty (accessToken)) { for (String key : requestParams.keySet()) { Object value = requestParams.get (key); logger.info ("키 :"+ 키 + "값 :"+ 값); } String code = requestParams.get("code");
if (StringUtils.isNotEmpty(code)) {
String authUrl = "http://" + request.getServerName() + "/realtybud/fbauth";
StringBuilder stringBuilder = new StringBuilder();
String fbAuthApi = "https://graph.facebook.com/v2.3/oauth/access_token?client_id=";
stringBuilder.append(fbAuthApi);
stringBuilder.append(selectAppId());
stringBuilder.append("&redirect_uri=");
stringBuilder.append(authUrl);
stringBuilder.append("&client_secret=");
stringBuilder.append(selectAppSecret());
stringBuilder.append("&code=");
stringBuilder.append(code);
String fbGraphUrl = stringBuilder.toString();
result = restTemplate.getForObject(fbGraphUrl, Map.class);
accessToken = result.get("access_token");
logger.info("Access Token: " + accessToken);
}
}
StringBuilder stringBuilder = new StringBuilder();
String fbGraphApi = "https://graph.facebook.com/v2.3/me?fields=id,name,email&access_token=";
stringBuilder.append(fbGraphApi);
stringBuilder.append(accessToken);
String fbProfileInfo = stringBuilder.toString();
// String info = restTemplate.getForObject(fbProfileInfo, String.class);
// logger.info("Info: " + info);
Map<String, String> info = restTemplate.getForObject(fbProfileInfo, Map.class);
logger.info("Id: " + info.get("id") + " name: " + info.get("name") + " email: " + info.get("email"));
String email = info.get("email");
if (StringUtils.isNotEmpty(email)) {
User user = userService.findUserByEmail(email);
if (user == null) {
user = new User();
user.setEmail(email);
user.setFacebookAccessToken(accessToken);
user.setFacebookName(info.get("name"));
userService.userSave(user);
Role userRole = new Role();
userRole.setRoleName("ROLE_USER");
userRole.setUser(user);
userService.roleSave(userRole);
List<Role> roles = new ArrayList<Role>();
roles.add(userRole);
user.setRoles(roles);
} else {
user.setFacebookAccessToken(accessToken);
user.setFacebookName(info.get("name"));
userService.userSave(user);
}
SecurityUser secUser = new SecurityUser(user);
Authentication authentication = new UsernamePasswordAuthenticationToken(secUser, secUser.getPassword(),
secUser.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
} else {
// error
}
// String fbAuthSuccessUrl = "/index?fbAuth=success";
//return "redirect:/";
}
어떻게 로그인 자격 증명으로 아파치 웹 서버로 리디렉션 할 수 있습니까?
미리 감사드립니다. Waqas
내 질문에 언급하지 않은 한 가지 더. 양식이 아파치 웹 서버에서 Tomcat 서버로 요청을 전송할 때, 나는 아파치 웹 서버 도메인 URL로 돌아갈 필요가있다. 나는 site url을 가진 developer.facebook 앱에 도메인 URL을 설정했다. –