使用 Spring Social 和 Spring MVC,我尝试在连接到社交提供者时使用 RedirectView,但一定是遗漏了一些东西,并且无法成功连接到 LinkedIn。
以下是 2 个控制器方法:第一个按预期运行:根据用户的服务提供商选择,它检测到它未通过sp.isconnected()
调用连接到 Linked,并且当未重定向到由第二个控制的视图时方法来启动链接的连接。
第二种方法设置适当的正确参数并重定向到适当的 spring 社交连接 URL (URIs.SPRINGLISIGNIN = "/connect/linkedin") 但是 Spring Social ConnectController 在这个阶段会期望一个 POST 方法,我不知道如何通过 RedirectView 传递它。我期待第一个控制器方法的初始 POST 方法将执行到第二个控制器方法,但事实并非如此。在 lisgnin 方法的调试模式下,request.getMethod() 显示一个 GET 值。
@RequestMapping(value = Uris.SPCHOICE, method = RequestMethod.POST)
public RedirectView Spchoice (@RequestParam("sp") String sp, Model model) {
ServiceProviders spasenum = ServiceProviders.valueOf(sp);
RedirectView toReturn;
SPConnectionRetriever spResolver=null;
switch (spasenum) {
case FACEBOOK :
spResolver = FBConnectionRetriever;
break;
case LINKEDIN :
spResolver = LIConnectionRetriever;
break;
}
SecurityContext.setCurrentSpResolver(spResolver);
if (spResolver.isconnected())
toReturn = new RedirectView(Uris.MAIN, true);
else
toReturn = new RedirectView(spResolver.getConnectUrl(), true);
return toReturn;
}
这是第二种方法:
@RequestMapping(value = Uris.SIGNINLI)
public RedirectView liSignin(HttpServletRequest request, HttpServletResponse response) {
request.setAttribute("scope", "r_fullprofile,r_network");
return new RedirectView(Uris.SPRINGLISIGNIN, true);