UPDATE
Already solved.
---------------------------
I am starting with Spring Social, and now I am confused with something. I allways receive null when I tried to get Connection<Facebook> in my request Controller.
First, I have my own implementation of ConnectController.
Here, in showfacebookRegisterForm, after login and resolve redirects from serverPage and connectedView I get Connection<Facebook> through ConnectionRepository.
But in other Controller i allways get null...
My social config xml.
Thank you in advance.
Already solved.
---------------------------
I am starting with Spring Social, and now I am confused with something. I allways receive null when I tried to get Connection<Facebook> in my request Controller.
First, I have my own implementation of ConnectController.
Code:
@Controller("facebookController")
//@RequestMapping(value = "/social")
public class FacebookController extends ConnectController {
private final static Log logger = LogFactory.getLog(FacebookController.class);
private ConnectionRepository connectionRepository;
@Autowired
public FacebookController(ConnectionFactoryLocator connectionFactoryLocator,
ConnectionRepository connectionRepository) {
super(connectionFactoryLocator, connectionRepository);
this.connectionRepository = connectionRepository;
}
@Override
protected String connectedView(String providerId) {
return "redirect:/connect/" + providerId + "/response";
}
@RequestMapping(value = "/facebook/response")
public String serverPage(Model model, HttpServletRequest request) {
String page = (String) request.getSession(false).getAttribute("page");
if (page == null) {
return "redirect:/connect/facebook/register";
} else {
request.getSession(false).removeAttribute("page");
return "redirect:/user/sendMessage";
}
}
@RequestMapping(value = "/facebook/register")
public String showfacebookRegisterForm(Model model, HttpServletRequest request) {
Connection<Facebook> connection = this.connectionRepository.getPrimaryConnection(Facebook.class);
if (connection == null) {
return "redirect:/connect/facebook";
}
Facebook fb = connection.getApi();
model.addAttribute("nombre", fb.userOperations().getUserProfile().getName());
model.addAttribute("apellidos", fb.userOperations().getUserProfile().getLastName());
return "register";
}
}
But in other Controller i allways get null...
Code:
@Controller(value = "userWebController")
@RequestMapping("/user")
@PreAuthorize("hasRole('ROLE_USER')")
public class UserWebController {
private static final Logger log = LoggerFactory.getLogger(UserWebController.class);
@Autowired
private UserService userService;
@Autowired
private ConnectionRepository connectionRepository;
...
@RequestMapping(value = "/sendMessage", method = RequestMethod.GET)
public String showSendMessage(HttpServletRequest request) throws IOException {
return "user/sendMessage";
}
@RequestMapping(value = "/sendMessage", method = RequestMethod.POST)
public String sendMessage(HttpServletRequest request) throws IOException {
Connection<Facebook> connection = this.connectionRepository.findPrimaryConnection(Facebook.class);
if (connection == null) {
request.getSession(true).setAttribute("page", request.getRequestURI());
return "redirect:/connect/facebook";
}
Facebook fb = connection.getApi();
fb.feedOperations().updateStatus((String) request.getAttribute("msg"));
return "user/sendMessage";
}
}
Code:
<bean id="connectionFactoryLocator"
class="org.springframework.social.connect.support.ConnectionFactoryRegistry">
<property name="connectionFactories">
<list>
<bean class="org.springframework.social.facebook.connect.FacebookConnectionFactory">
<constructor-arg value="${facebook.clientId}" />
<constructor-arg value="${facebook.clientSecret}" />
</bean>
</list>
</property>
</bean>
<bean id="usersConnectionRepository"
class="org.springframework.social.connect.jdbc.JdbcUsersConnectionRepository">
<constructor-arg ref="miDataSource" />
<constructor-arg ref="connectionFactoryLocator" />
<constructor-arg ref="textEncryptor" />
</bean>
<bean id="connectionRepository" factory-method="createConnectionRepository"
factory-bean="usersConnectionRepository" scope="request">
<constructor-arg value="#{request.getRequestURI().split('/').length > 3 ? request.getRequestURI().split('/')[3] : 'guest'}" />
<aop:scoped-proxy proxy-target-class="false" />
</bean>
<bean id="textEncryptor" class="org.springframework.security.crypto.encrypt.Encryptors"
factory-method="noOpText" />