2

我正在拼命地尝试在 Facebook页面(品牌页面,而不是用户墙)上自动发布帖子。我正在使用 spring social 作为框架。

这个想法如下:我有一个使用spring social的网络应用程序,我希望能够以编程方式在相关的facebook品牌页面上发布状态。品牌页面就是人们“喜欢”的这种页面,类似于https://www.facebook.com/cocacola

我尝试了以下方法: 1. 在页面上获取具有管理员权限的有效用户的访问令牌 2. 获取页面的访问权限(如何?),并在该页面上发布。也许通过页面操作?或者其他的东西...

我被困在第一步,我无法尝试第二步。对于第一步,我有:

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 - “ https://graph.facebook.com/oauth/access_token ”的POST 请求导致 400(错误请求);调用错误处理程序

2013 年 10 月 23 日晚上 9:57:59 org.apache.catalina.core.StandardWrapperValve 调用严重:servlet [appServlet] 在路径 [/myapp] 的上下文中的 Servlet.service() 引发异常 [请求处理失败;嵌套异常是 org.springframework.web.client.HttpClientErrorException: 400 Bad Request] 根本原因是 org.springframework.web.client.HttpClientErrorException: 400 Bad Request

如果您能发布一个功能齐全的概念证明,我将不胜感激(我在那里找到了答案元素,但我没有设法让它工作......)。

谢谢你的帮助!

4

1 回答 1

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”权限并知道要发布到的页面的 ID,或者您可以获得用户有权访问的页面

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

如果有人知道如何将照片发布到页面,请告诉我。死在那里。

于 2014-10-15T01:13:54.483 回答