我拼命尝试在 Facebook 页面(品牌页面,而不是用户墙)上自动发帖。我使用 spring social 作为框架。
想法如下:我有一个使用 spring social 的网络应用程序,我希望能够在相关的 facebook 品牌页面上以编程方式发布状态。品牌页面就是人们“喜欢”的这种页面,类似于https://www.facebook.com/cocacola。
我尝试了以下方法: 1. 获取页面上具有管理员权限的有效用户的访问 token 2. 访问(如何?)页面,并在该页面上发帖。也许通过页面操作?或者什么...
我卡在了第 1 步,无法尝试第 2 步。对于第一步,我有:
FacebookConnectionFactory connectionFactory = new FacebookConnectionFactory("clientid", "secretkey");
OAuth2Operations op = connectionFactory.getOAuthOperations();
OAuth2Parameters params = new OAuth2Parameters();
- 我应该把什么作为参数?我想我必须定义一个范围,对吧?
- 哪个页面可以发布?
然后,我应该为管理员用户获取一个访问 token ,如下所示:
AccessGrant ag = op.exchangeCredentialsForAccess("username", "password", params);
accessToken = ag.getAccessToken();
在这里,我应该为用户提供一个访问 token ,这样用户就不需要通过 facebook 登录页面自行输入用户名/密码。但是,它不起作用。我有以下异常:
WARN : org.springframework.web.client.RestTemplate - POST request for "https://graph.facebook.com/oauth/access_token" resulted in 400 (Bad Request); invoking error handler
Oct 23, 2013 9:57:59 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [appServlet] in context with path [/myapp] threw exception [Request processing failed; nested exception is org.springframework.web.client.HttpClientErrorException: 400 Bad Request] with root cause org.springframework.web.client.HttpClientErrorException: 400 Bad Request
如果您能发布一个功能齐全的概念证明,我将不胜感激(我在那里找到了答案的要素,但我没能让它发挥作用...)。
感谢您的帮助!
最佳答案
检查 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);
}
你需要'manage_pages'权限并知道你想发布的页面的ID或者你可以获得用户有权访问的页面
PageOperations pageOps = facebook.pageOperations();
for(org.springframework.social.facebook.api.Account account : pageOps.getAccounts()) {
...
如果有人知道如何将照片发布到页面,请告诉我。死在那里。
关于java - 如何使用 spring social 以编程方式在 facebook 页面上发布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19551301/