嗨2我所有人都喜欢在教程中。但我已经停止获取access_Token。所以这是我重定向到Facebook的代码。
@RequestMapping(method = RequestMethod.GET)
public void process(/*
* @ModelAttribute("user") User user, BindingResult
* result Model model,
*/HttpServletRequest request, HttpServletResponse response) {
FacebookConnectionFactory connectionFactory = new FacebookConnectionFactory("240362226072898", "657532dea6d091ab44a56668c47cca15");
OAuth2Operations oauthOperations = connectionFactory.getOAuthOperations();
OAuth2Parameters params = new OAuth2Parameters("http://localhost:8080/shop/facebook");
String authorizeUrl = oauthOperations.buildAuthorizeUrl(GrantType.IMPLICIT_GRANT, params);
try {
response.sendRedirect(authorizeUrl);
LOG.error("ALL WORKING FINE>>>");
} catch (IOException e) {
LOG.error("Errorrrrr" + e);
}
之后在其他控制器中。映射在/ facebook上我收到了一个URL,但是我找不到任何参数,因为在URL的末尾我看到了#。像
http://localhost:8080/shop/facebook#access_token=.......&expires_in=6277
如果我剪“#”并粘贴“?”一切都会好的
所以这是我的控制器,我收到这个网址。
@Controller
@RequestMapping(value = "/facebook")
public class FacebookController {
private static final Logger LOG = Logger.getLogger(FacebookController.class);
@RequestMapping(method = RequestMethod.GET)
public void getAuthorisation(@RequestParam String access_token, HttpServletResponse response, HttpServletRequest request) {
LOG.error("Access token"+access_token);
/* LOG.error(request.getAttribute("access_token"));
LOG.error(request.getParameter("access_token"));
*/
}
}
答案 0 :(得分:2)
使用Javascript从URI fragment提取访问令牌。
请参阅client side flow的文档:
如果用户选择授权您的应用程序,则该用户将是 重定向到:
YOUR_REDIRECT_URI#access_token = USER_ACCESS_TOKEN& expires_in = NUMBER_OF_SECONDS_UNTIL_TOKEN_EXPIRES
请注意,不像 服务器端流,访问令牌传递给你的redirect_uri url片段等只适用于您的应用程序 的JavaScript。