如何以编程方式在春季社交的Facebook页面上发帖?

时间:2013-10-23 20:06:56

标签: java facebook spring spring-social spring-social-facebook

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

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

我尝试了以下内容: 1.在页面上获取具有管理员权限的有效用户的访问令牌 2.获取页面的访问权限(如何?),并在该页面上发布。也许通过pageoperation?什么......

我陷入了第一步,我无法尝试第二步。第一步,我有:

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

OAuth2Parameters params = new OAuth2Parameters();
  • 我应该把什么作为参数?我想我要定义一个范围,对吗?
  • 哪一个可以在该页面上发帖?

然后,我应该为admin用户获取一个访问令牌,如下所示:

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]的Servlet.service()在路径[/ myapp]的上下文中引发异常[请求处理失败;嵌套异常是org.springframework.web.client.HttpClientErrorException:400 Bad Request]的根本原因   org.springframework.web.client.HttpClientErrorException:400 Bad Request

如果你能发布一个功能齐全的概念证明我会很感激(我找到了答案的元素,但我没有设法让它发挥作用......)。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

检查the documentation如何进行身份验证,然后尝试以下操作:

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);
}

您需要&#39; manage_pages&#39;特权和知道您要发布到的页面的ID,或者您可以获取用户有权访问的页面

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

如果有人想出如何将照片发布到网页上,请与我们联系。在那里死去。