2016-04-25 3 views
1

Мне нужно интегрировать Spring-social с Facebook и получать каналы/сообщения со страницы моей компании.Spring Social - интеграция Facebook

Фрагмент кода

public static void main(String[] args) { 
     Facebook facebook1 = new FacebookTemplate(""); 
     FeedOperations feedOperations = facebook1.feedOperations(); 
     PagedList<Post> feeds = feedOperations.getFeed(); 

     for (Post post : feeds) { 
      System.out.println("@" + post.getName()); 
     } 
    } 

Я создал ключ на «https://developers.facebook.com», но когда я вхожу в то же FacebookTemplate("");, и запускает программу, она бросает мне ошибку.

Exception in thread "main" org.springframework.social.InvalidAuthorizationException: Invalid OAuth access token. 
    at org.springframework.social.facebook.api.impl.FacebookErrorHandler.handleFacebookError(FacebookErrorHandler.java:81) 
    at org.springframework.social.facebook.api.impl.FacebookErrorHandler.handleError(FacebookErrorHandler.java:59) 
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:616) 
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:572) 
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:547) 

Пожалуйста, помогите мне в этой связи,

1.) Где и как я могу генерировать ключи.

2.) Как я могу получить доступ к пользовательским каналам. Моему секретному ключу может потребоваться доступ к этому профилю пользователя.

3.) Если мне нужно предоставить пользователю

ответ

1

Используя конструктор FacebookTemplate непосредственно предоставит вам неавторизованный (то есть, без OAuth) только соединение, которое будет работать для запросов, которые не требуют аутентификации , Вот почему вы получаете исключения авторизации, для доступа к каналам требуется аутентификация (аутентифицированный пользователь facebook, который предоставил вашему приложению надлежащую авторизацию для выполнения этих действий).

Обратите внимание, что вам понадобится способ аутентификации доступа к токену пользователя, а это в консольном приложении может оказаться сложным. Использование Spring Social в WebApplication однако довольно легко, в основном все, что вам нужно, это

@Controller 
@RequestMapping("/") 
public class HelloController { 

    private Facebook facebook; 
    private ConnectionRepository connectionRepository; 

    @Inject 
    public HelloController(Facebook facebook, ConnectionRepository connectionRepository) { 
     this.facebook = facebook; 
     this.connectionRepository = connectionRepository; 
    } 

    @RequestMapping(method=RequestMethod.GET) 
    public String helloFacebook(Model model) { 
     if (connectionRepository.findPrimaryConnection(Facebook.class) == null) { 
      return "redirect:/connect/facebook"; 
     } 

     model.addAttribute("facebookProfile", facebook.userOperations().getUserProfile()); 
     PagedList<Post> feed = facebook.feedOperations().getFeed(); 
     model.addAttribute("feed", feed); 
     return "hello"; 
    } 

} 

(пример взят отсюда: https://github.com/spring-guides/gs-accessing-facebook) с конфигурацией с spring.social.facebook.appId и spring.social.facebook.appSecret настроен должным образом.

К тесту ваших запросов с консольным приложением, однако, вы можете

  1. Создать приложение на API страницах Facebook.
  2. Перейти к https://developers.facebook.com/tools/accesstoken/
  3. Используйте, что маркеры в FacebookTemplate -Constructor

Это всегда будет ваш пользователь, поэтому вы не можете выпустить это приложение в дикой природе;)

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

  • Нет связанных вопросов^_^