简体   繁体   中英

Spring Social Facebook URL Redirect on another server

I'm new on Spring Social API, I'm trying to login my application by facebook, but it's not redirecting me to my domain url.

My application is running on two servers, which is based on restcontroller with ajax form submitted. One is apache web server and another one is tomcat server.

But not my facebook authentication is based on restcontroller, if the user need to login by facebook ID then he can just simply click on login with facebook button and page successfully redirecting to facebook login pate, but not redirect back to the requested URL.

My Code as under:

Login with Facebook

@RequestMapping(value = "/fbauth", method = RequestMethod.GET) public void fbredirect(@RequestParam Map requestParams) throws UnsupportedEncodingException { String accessToken = null; // String accessToken = // "CAAFv5tfCxvsBAMkGz7Mz63ESCLEK3jgZBEZAZBqlj3CApIyqmvA5hOrtl9Ln05O3BRTcx95TjT9IxZBfRz3fKZBjNJ74qko1SFjjzAXmdDnzVePmGXswOM8NHEGTZA6aub7bnZBYBIMO2ZBXX2gpo6ky7Dkqu2xZBUymAalAgg3ixaRQMe3e3w1ruUtVeyQrtMb3x0pehHOIaTQZDZD"; RestTemplate restTemplate = new RestTemplate(); Map result = null; if (StringUtils.isEmpty(accessToken)) { for (String key : requestParams.keySet()) { Object value = requestParams.get(key); logger.info("Key: " + key + " value: " + value); }

  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:/"; } 

Please help me how can I redirect to apache web server with login credentials.

Thanks in advance. Waqas

我通过更改Web服务器中的重定向Url(以我的情况为nginx)解决了我的问题,我不知道这是否是最好的方法(甚至不合适)!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM