Вход в Facebook с помощью Spring Social с использованием существующего токена доступа пользователя

Вот что я сейчас имею:

  • Spring REST, где многие API требуют, чтобы пользователь был аутентифицирован
  • API 'регистрации' (/ api / v1 / register)
  • API 'login', который принимает имя пользователя / пароль (/ api / v1 / login)
  • API «Facebook Login», который использует Spring и Spring Security для создания пользовательского подключения и регистрации моего пользователя в (/ auth / facebook)

Моя проблема заключается в том, что я хочу, чтобы эти API были использованы несколькими клиентами, но способ входа в Facebook прямо сейчас, это не очень хорошо работает на мобильных устройствах (отлично работает на веб-сайте).

Вот мобильный сценарий:

  • Я использую SDK для iOS от Facebook для запроса разрешения от пользователя
  • Facebook возвращает токен доступа пользователя
  • Я хочу отправить мой бэкэнд-сервис этому токену и принять Spring Social, создать User Connection и т. Д.

Это можно сделать? Или мне придется написать свой собственный API для продолжения подключения пользователя?

Цените любую помощь!

    One Solution collect form web for “Вход в Facebook с помощью Spring Social с использованием существующего токена доступа пользователя”

    У меня была одна и та же проблема, и вот как я сделал ее работу. Вероятно, у вас есть SocialConfigurer со следующим:

    @Configuration @EnableSocial public class SocialConfig implements SocialConfigurer { @Autowired private DataSource dataSource; @Bean public FacebookConnectionFactory facebookConnectionFactory() { FacebookConnectionFactory facebookConnectionFactory = new FacebookConnectionFactory("AppID", "AppSecret"); facebookConnectionFactory.setScope("email"); return facebookConnectionFactory; } @Override public void addConnectionFactories(ConnectionFactoryConfigurer cfConfig, Environment env) { cfConfig.addConnectionFactory(facebookConnectionFactory()); } @Override public UserIdSource getUserIdSource() { return new AuthenticationNameUserIdSource(); } @Override public UsersConnectionRepository getUsersConnectionRepository(ConnectionFactoryLocator connectionFactoryLocator) { return new JdbcUsersConnectionRepository(dataSource, connectionFactoryLocator, Encryptors.noOpText()); } // Other @Bean maybe ... } 

    Отсюда, что вы можете сделать, в Controller / RestController добавить сопоставление с RequestParam для вашего токена, который вы будете отправлять на ваш сервер:

     @Autowired private FacebookConnectionFactory facebookConnectionFactory; @Autowired private UsersConnectionRepository usersConnectionRepository; @RequestMapping(value = "/my-facebook-url", method = RequestMethod.POST) public String fb(@RequestParam String token) { AccessGrant accessGrant = new AccessGrant(token); Connection<Facebook> connection = facebookConnectionFactory.createConnection(accessGrant); UserProfile userProfile = connection.fetchUserProfile(); usersConnectionRepository.createConnectionRepository(userProfile.getEmail()).addConnection(connection); // ... return "Done"; } 

    Полезные ссылки

    • UsersConnectionRepository
    • ConnectionRepository
    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.