2015-03-14 3 views
0

Я создаю веб-портал с помощью Java; помимо других требований, я изо всех сил пытаюсь понять один из самых простых (по крайней мере, на первый взгляд) требований: Мой клиент хочет на своем портале первые N постов своей стены facebook , и он хочет прочитать первые N твитов его щебет страницаJava Read Facebook Wall

Поскольку мой Java-код основан на Spring, я хотел бы использовать весной социальные, пружинный социальный твиттер и фейсбук пружинного социальный, чтобы удовлетворить требование

с твиттером у меня не был никаких проблем; на самом деле я

  • создал приложение на твиттере
  • получили твиттер идентификатор приложения и приложение секрета
  • подготовлен код

Через пару часов, все работали очень хорошо

Проблем родились с facebook, и много времени я борюсь с ним Я перешел от весеннего социального к facebook4j (так как этот последний кажется мне сильнее). я сделал следующее

  • создал приложение на FB
  • получил facebook APPID и appSecret
  • сказал коду, что мне нужно разрешение read_stream
  • подготовленный код

Но я не умею читать сообщения со своей стены. Есть ли кто-нибудь, кто смог удовлетворить этот сценарий? здесь мой facebook4j код

private static final Logger log = LoggerFactory.getLogger(FacebookTest.class.getName()); 
public static void main (String[] a) 
{ 
    try 
    { 
     ConfigurationBuilder cfgBui = new ConfigurationBuilder(); 
     cfgBui.setDebugEnabled(true); 
     cfgBui.setOAuthAppId(myAppId); 
     cfgBui.setOAuthAppSecret(myAppSecret); 
     cfgBui.setUseSSL(true); 
     Configuration cfg = cfgBui.build(); 
     FacebookFactory ff = new FacebookFactory(cfg); 
     OAuthSupport support = new OAuthAuthorization(cfg); 
     support.setOAuthPermissions("read_stream"); 
     AccessToken appAccessToken = support.getOAuthAppAccessToken(); 
     Facebook face = ff.getInstance(appAccessToken); 
     ResponseList<Post> posts = face.searchPosts("test"); 
     for (Post post : posts) 
     { 
      System.out.println(post.getId()); 
     } 
    } catch (Exception e) 
    { 
     log.error("Errore", e); 
    } 
} 

Насколько я понял, я должен нуждаться в маркер доступа пользователя, но я не знаю, как создать его; должен ли я создать логин и показать пользователю диалоговое окно входа FB? Если да, почему я должен создавать секрет приложения и приложения? У них нет смысла в моем сценарии Кроме того ... в моем случае ... серверная сторона должна аутентифицироваться на FB и читать сообщения из хорошо известной пользовательской стены (стены моего клиента ...), так что ... я должен представить диалог входа в систему? где я должен перенаправить после входа в FB?

Есть ли хороший человек :), который может разъяснить мне сообщение чтения FB?

ответ

3

Вы должны использовать одну из возможностей авторизации пользователя (с помощью read_stream), чтобы получить доступ к его потоку.Here's ссылка на все возможности: https://developers.facebook.com/docs/facebook-login/v2.2

Вы также можете создать токены доступа с Graph API Explorer: https://developers.facebook.com/tools/explorer/

Подробная информация о доступе токенов и как генерировать их можно найти в следующих ссылок:

Имейте в виду, что расширенный токен пользователя длится всего 60 дней, после чего ваш клиент должен будет обновить его вручную. В общем, вам запрещено использовать профили пользователей по коммерческим причинам, и очень необычно показывать поток пользователей на веб-сайте.

Лучше: используйте страницу Facebook. /page-id/feed с расширенным токеном, который длится вечно.

+0

благодарит за ваш ответ; поэтому в любом случае с facebook недостаточно, чтобы получить appId и appSecretId; мы всегда (или когда нужно) должны регистрировать и генерировать токен доступа пользователя .... Мне интересна идея страницы Facebook, но я не знаю, как это работает ... Я постараюсь расследовать. –

1

Если вы используете spring-social-facebook, вы можете позволить пользователю войти в систему через (входной поток входа в систему), а затем вы можете получить доступ к стене пользователя. Тем не менее, пользователю необходимо будет выполнить авторизацию и авторизацию приложения для выполнения операций.

Вот весной социальный образец проект, демо, как весна-социально-facebook Войти производится https://github.com/spring-projects/spring-social-samples

Кроме того, в вашем коде Java вы можете использовать feedoperations для сбора информации о домашних кормов, а также запросить против него. Оформить документацию.

facebook.feedOperations(). 
+0

спасибо, Пол, я уже видел весенние социальные образцы и подачу; к сожалению, как я уже говорил ранее, мне не нравится, что я всегда должен войти в систему, чтобы получить токен пользователя. Я попытаюсь использовать PageOperations, хотя я не вижу никакого метода для чтения лент страниц. –

+0

Операции с страницами @AngeloImmediata предназначены для страниц facebook. В вашем случае вы ищете сообщения пользователей на стене прямо? –

+0

т. Е. Вы правы; Мне нужно показать последние X сообщений на моем сайте (я знаю, это может быть странно ... но это требование моего клиента :)) –