поделиться с Facebook с помощью Spring-Social и Spring Security

Я интегрировал кнопку входа в социальную сеть [Facebook] в свое веб-приложение. Работает нормально, используя пружинно-социальную и пружинную охрану.

В моем 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 таблице.

Для последующего входа в систему я также получаю обновленный connection в моем WebRequest

Теперь я хочу создать shareWithFacebook операцию для пользователя, который вошел в мое приложение с помощью кнопки signwithfacebook.

Для этого мой контроллер:

@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 в этом контроллере. Как я могу использовать этот объект подключения для выполнения любых операций, пожалуйста, помогите


person Arpan Das    schedule 26.01.2015    source источник


Ответы (1)


Никакой помощи от stackoverflow: но на самом деле я получил решение, может ли оно помочь кому-то другому, тем самым опубликовав то же самое:

добавьте это в конфигурацию social-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>

Затем используйте то же самое в контроллере ur для работы с существующим объектом соединения с 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 ..

person Arpan Das    schedule 26.01.2015