2012-06-22 4 views
-1

Несколько дней назад я пишу интеграцию facebook, используя учебник весны. Вот мой кодКак весна социальная связь

FacebookConnectionFactory connectionFactory = new FacebookConnectionFactory("appId", "appSecret"); 
    OAuth2Operations oauthOperations = connectionFactory.getOAuthOperations(); 
    OAuth2Parameters params = new OAuth2Parameters("http://localhost:8080/shop/facebook"); 
    String authorizeUrl = oauthOperations.buildAuthorizeUrl(GrantType.IMPLICIT_GRANT, params); 

    try { 
     response.sendRedirect(authorizeUrl); 
     LOG.error("ALL WORKING FINE>>>"); 
    } catch (IOException e) { 
     LOG.error("Errorrrrr" + e); 
    } 
    return null; 

Тогда я должен получить access_token, но он приходит ко мне в хеш-части URL (так я должен получить access_token с помощью JS) - неправильный путь. После этого я устанавливаю еще один учебник Spring-Social-quickstart, и я не могу понять, как он получает access_token? Что я должен написать, чтобы получить access_token на стороне сервера. Должны ли это быть некоторые перехватчики запроса или существуют другие способы?

+0

Что не работает на вас? Какие ошибки вы получаете? У вас есть проблема с конкретным кодом? Показать код. – maksimov

ответ

1

Проблема в том, что я ожидаю access_token - но это авторизация на стороне клиента. Поэтому я должен ожидать, что код авторизации сделает серверную аутентификацию.

Но теперь проблема в том, что я поймал исключение здесь на accessGrant. Это другой контроллер. Я получаю authCode, но он показывает мне исключение 400: Badrequest.

@RequestMapping(method = RequestMethod.GET) 
public String getAuthorisation(NativeWebRequest webRequest, HttpServletResponse response, HttpServletRequest request) { 
    FacebookConnectionFactory connectionFactory = 
      new FacebookConnectionFactory("clientId", "clientSecret"); 
    OAuth2Operations oauthOperations = connectionFactory.getOAuthOperations(); 

String authCode = request.getParameter("code");  
    LOG.error("Facebook controller works... 1"); 
    LOG.error(authCode); 

    AccessGrant accessGrant = oauthOperations.exchangeForAccess(authCode, "http://localhost:8080/shop/pages/social.jsp", null); 
    LOG.error("Facebook controller works... 2"); 
    Connection<Facebook> connection = connectionFactory.createConnection(accessGrant); 
    LOG.error("Facebook controller works... 3"); 
    return null; 

} 
Смежные вопросы