使用 Spring-社交和 Spring 安全与 Facebook 分享
share with facebook using Spring-Social and Spring Security
我已将社交登录按钮 [Facebook] 与我的 Web 应用程序集成在一起。它使用 spring-social 和 spring 安全性工作正常。
在我的 login.jsp 我有:
<!-- Add Facebook sign in button -->
<a href="${pageContext.request.contextPath}/auth/facebook"><button class="btn btn-facebook"><i class="icon-facebook"></i>facebook</button></a>
现在我的注册控制器是:当用户第一次尝试从 facebook 登录并在我的数据库中注册用户时,这是我从 facebook 收到回调的地方。
@RequestMapping(value = "/user/register", method = RequestMethod.GET)
public String showRegistrationForm(WebRequest request, Model model)
{
LOGGER.debug("Rendering registration page.");
@SuppressWarnings("deprecation")
Connection<?> connection = ProviderSignInUtils.getConnection(request);
RegistrationForm registration = createRegistrationDTO(connection);
LOGGER.debug("Rendering registration form with information: {}", registration);
model.addAttribute(MODEL_NAME_REGISTRATION_DTO, registration);
return VIEW_NAME_REGISTRATION_PAGE;
}
而且用户正在 UserConnection
table.
中保存
对于后续登录,我也在 WebRequest
中获取更新的 connection
现在我想为使用 signwithfacebook
按钮登录我的应用程序的用户创建一个 shareWithFacebook
操作。
为此,我的控制器是:
@RequestMapping(method = RequestMethod.GET)
public String shareWithFacebook(WebRequest request){
Map<String, String[]> params = request.getParameterMap();
String[] head = request.getAttributeNames(WebRequest.SCOPE_REQUEST);
String[] head1 = request.getAttributeNames(WebRequest.SCOPE_SESSION);
return null;
}
现在,当我 运行 这个控制器处于调试模式时,我可以看到 Connection
对象出现在我的 WebRequest
对象中,
我如何使用这个连接对象进行任何操作,请帮助
没有来自 Whosebug 的帮助:但实际上我得到了解决方案,可能对其他人有帮助,因此发布相同的内容:
将此添加到您的社交-xml 配置中以初始化 FacebookApiHelper
<bean id="facebookApiHelper" class="org.springframework.social.facebook.config.support.FacebookApiHelper">
<constructor-arg index="0" ref="usersConnectionRepository"/>
<constructor-arg index="1" ref="userIdSource"/>
</bean>
然后在你的控制器中使用相同的方法来处理现有的 facebook 连接对象。
@Controller
@RequestMapping("/facebook")
public class FacebookOperationController {
private static final Logger logger = LoggerFactory.getLogger(FacebookOperationController.class);
@Autowired
protected FacebookApiHelper facebookApiHelper;
@Autowired
UserIdSource userIdSource;
private UsersConnectionRepository usersConnectionRepository;
@Autowired
public FacebookOperationController(UsersConnectionRepository usersConnectionRepository)
{
this.usersConnectionRepository = usersConnectionRepository;
}
@RequestMapping(method = RequestMethod.GET)
public String shareWithFacebook(WebRequest request,Model model){
Facebook facebook = facebookApiHelper.getApi();
Connection<Facebook> connection = usersConnectionRepository.createConnectionRepository(userIdSource.getUserId()).findPrimaryConnection(Facebook.class);
return "tilesname";
}
}
现在我们有 connection
和 facebook
,尽情享受 api..
我已将社交登录按钮 [Facebook] 与我的 Web 应用程序集成在一起。它使用 spring-social 和 spring 安全性工作正常。
在我的 login.jsp 我有:
<!-- Add Facebook sign in button -->
<a href="${pageContext.request.contextPath}/auth/facebook"><button class="btn btn-facebook"><i class="icon-facebook"></i>facebook</button></a>
现在我的注册控制器是:当用户第一次尝试从 facebook 登录并在我的数据库中注册用户时,这是我从 facebook 收到回调的地方。
@RequestMapping(value = "/user/register", method = RequestMethod.GET)
public String showRegistrationForm(WebRequest request, Model model)
{
LOGGER.debug("Rendering registration page.");
@SuppressWarnings("deprecation")
Connection<?> connection = ProviderSignInUtils.getConnection(request);
RegistrationForm registration = createRegistrationDTO(connection);
LOGGER.debug("Rendering registration form with information: {}", registration);
model.addAttribute(MODEL_NAME_REGISTRATION_DTO, registration);
return VIEW_NAME_REGISTRATION_PAGE;
}
而且用户正在 UserConnection
table.
对于后续登录,我也在 WebRequest
connection
现在我想为使用 signwithfacebook
按钮登录我的应用程序的用户创建一个 shareWithFacebook
操作。
为此,我的控制器是:
@RequestMapping(method = RequestMethod.GET)
public String shareWithFacebook(WebRequest request){
Map<String, String[]> params = request.getParameterMap();
String[] head = request.getAttributeNames(WebRequest.SCOPE_REQUEST);
String[] head1 = request.getAttributeNames(WebRequest.SCOPE_SESSION);
return null;
}
现在,当我 运行 这个控制器处于调试模式时,我可以看到 Connection
对象出现在我的 WebRequest
对象中,
我如何使用这个连接对象进行任何操作,请帮助
没有来自 Whosebug 的帮助:但实际上我得到了解决方案,可能对其他人有帮助,因此发布相同的内容:
将此添加到您的社交-xml 配置中以初始化 FacebookApiHelper
<bean id="facebookApiHelper" class="org.springframework.social.facebook.config.support.FacebookApiHelper">
<constructor-arg index="0" ref="usersConnectionRepository"/>
<constructor-arg index="1" ref="userIdSource"/>
</bean>
然后在你的控制器中使用相同的方法来处理现有的 facebook 连接对象。
@Controller
@RequestMapping("/facebook")
public class FacebookOperationController {
private static final Logger logger = LoggerFactory.getLogger(FacebookOperationController.class);
@Autowired
protected FacebookApiHelper facebookApiHelper;
@Autowired
UserIdSource userIdSource;
private UsersConnectionRepository usersConnectionRepository;
@Autowired
public FacebookOperationController(UsersConnectionRepository usersConnectionRepository)
{
this.usersConnectionRepository = usersConnectionRepository;
}
@RequestMapping(method = RequestMethod.GET)
public String shareWithFacebook(WebRequest request,Model model){
Facebook facebook = facebookApiHelper.getApi();
Connection<Facebook> connection = usersConnectionRepository.createConnectionRepository(userIdSource.getUserId()).findPrimaryConnection(Facebook.class);
return "tilesname";
}
}
现在我们有 connection
和 facebook
,尽情享受 api..