как программно публиковать сообщения на странице facebook с помощью Spring Social?

Я отчаянно пытаюсь делать автоматические публикации на странице в facebook (странице бренда, а не стене пользователя). Я использую Spring Social в качестве основы.

Идея заключается в следующем: у меня есть веб-приложение, использующее Spring Social, и я хочу иметь возможность публиковать статус программно на соответствующей странице бренда facebook. Страница бренда — это страница, которая нравится людям, что-то вроде https://www.facebook.com/cocacola

Я пробовал следующее: 1. получить токен доступа действительного пользователя с правами администратора на странице 2. получить доступ (как?) к странице и опубликовать на этой странице. Может быть, через pageoperation? или что-то...

Я застрял на 1-м шаге, и я не смог попробовать 2-й шаг. Для 1-го шага у меня есть:

FacebookConnectionFactory connectionFactory = new FacebookConnectionFactory("clientid", "secretkey");
OAuth2Operations op = connectionFactory.getOAuthOperations();

OAuth2Parameters params = new OAuth2Parameters();
  • что я должен указать в качестве параметров? Я думаю, я должен определить масштаб, верно?
  • какой из них будет хорошо разместить на этой странице?

Затем я должен получить токен доступа для пользователя-администратора следующим образом:

AccessGrant ag = op.exchangeCredentialsForAccess("username", "password", params);

accessToken = ag.getAccessToken();

Здесь я должен иметь токен доступа для пользователя таким образом, чтобы пользователю не нужно было вводить имя пользователя/пароль через страницу входа в facebook. Однако это не работает. У меня есть следующее исключение:

ПРЕДУПРЕЖДЕНИЕ: org.springframework.web.client.RestTemplate — запрос POST для «https://graph.facebook.com/oauth/access_token" — 400 (неверный запрос); вызов обработчика ошибок

23 октября 2013 г. 21:57:59 org.apache.catalina.core.StandardWrapperValve вызывает СЕРЬЕЗНОЕ: Servlet.service() для сервлета [appServlet] в контексте пути [/myapp] выдал исключение [Ошибка обработки запроса; вложенным исключением является org.springframework.web.client.HttpClientErrorException: 400 Bad Request] с основной причиной org.springframework.web.client.HttpClientErrorException: 400 Bad Request

Я был бы признателен, если бы вы могли опубликовать полностью функциональное доказательство концепции (я нашел там элементы ответа, но мне не удалось заставить его работать...).

Спасибо за вашу помощь!


person awesome    schedule 23.10.2013    source источник
comment
так ты разобрался? Если да, не могли бы вы поделиться?   -  person Maurice    schedule 22.11.2017


Ответы (1)


Ознакомьтесь с документацией о том, как пройти аутентификацию, а затем попробуйте следующее:

import org.springframework.social.connect.Connection;
import org.springframework.social.connect.ConnectionRepository;
import org.springframework.social.connect.UsersConnectionRepository;
import org.springframework.social.facebook.api.Facebook;

...

@Inject
private UsersConnectionRepository usersConnectionRepository;

public void postStatusOnPage(String userId, String pageId, String message) {
    ConnectionRepository connectionRepository = usersConnectionRepository.createConnectionRepository(userId);
    Connection<Facebook> facebookConnec = connectionRepository.getPrimaryConnection(Facebook.class);
    Facebook facebook = facebookConnec.getApi();
    facebook.pageOperations().post(pageId, message);
}

Вам понадобится привилегия «manage_pages» и знать идентификатор страницы, на которую вы хотите опубликовать, или вы можете получить страницы, к которым у пользователя есть доступ.

PageOperations pageOps = facebook.pageOperations();
for(org.springframework.social.facebook.api.Account account : pageOps.getAccounts()) {
    ...

Если кто-то разберется, как разместить фото на странице, дайте мне знать. Умираю там.

person Erich    schedule 15.10.2014
comment
Решил разместить фото на странице. Отредактировал spring-social-facebook и добавил метод PageTemplate.postPhoto, который не принимает идентификатор альбома, а публикует сообщения непосредственно на странице. github.com/kdubb1337/spring-social-facebook/blob/master/ - person Erich; 21.10.2014