使用RestFB api发布到Facebook页面墙

时间:2013-10-21 10:00:12

标签: java facebook facebook-graph-api restfb

我想张贴在facebook页面的墙上。我可以使用App Access令牌在用户墙上发布。

我通过扩展DefaultFacebookClient获得了App Access Token

public class ConnectionService extends DefaultFacebookClient{

public ConnectionService(String appId, String appSecret) {
    AccessToken accessToken = this.obtainAppAccessToken(appId, appSecret);
    this.accessToken = accessToken.getAccessToken();
}
}

有了这个,我可以使用appID和appSecret发布到用户墙。但是当我试图发布到Page Wall时  我收到“用户未授权应用程序执行此操作”的错误

任何人都可以提供建议吗?

4 个答案:

答案 0 :(得分:6)

要在Facebook页面墙上发布,您需要按照以下步骤操作:

  1. 前往https://developers.facebook.com/tools/explorer
  2. 点击"获取访问令牌"
  3. "扩展权限"选项卡,选择manage_pages和publish_actions并点击"获取访问令牌"
  4. 现在在图谱API下,在“拨打电话”下,输入" me / accounts"并点击提交
  5. 在下面的屏幕中,您会看到"数据" json对象包含所有页面和页面访问令牌。
  6. 获取所需的页面令牌访问权限,并使用此令牌替换下面代码中的PAGE_ACCESS_TOKEN。
  7. 将PAGE_NAME替换为您的网页名称(网址中的网页名称slug)。
  8. 运行以下代码,应该完成这项工作:)
  9. final FacebookClient fb = new DefaultFacebookClient(PAGE_ACCESS_TOKEN); final Page page = facebookClient.fetchObject(PAGE_NAME, Page.class); facebookClient.publish("PAGE_NAME/feed", FacebookType.class, Parameter.with("message", "RestFB test"));

答案 1 :(得分:1)

App Access Token是最基本的,不允许您发布任何内容。为了将某些内容发布到Facebook页面(作为页面),您需要获得页面访问令牌。

这个过程有点复杂,因为您实际上需要首先使用“manage_pages”权限授权用户,使用用户访问令牌,您可以调用API来获取页面访问令牌(/ me / accounts)。 / p>

请参阅以下链接:

顺便说一句,不推荐使用REST API:https://developers.facebook.com/blog/post/616/

你也可以尝试“客户端令牌”(开发者设置>高级),我从来没有使用过那个,但它可能是最简单的解决方案。在任何情况下,App Access令牌都是错误的。

答案 2 :(得分:0)

确保在对用户进行身份验证时提到的范围也包括manage_pages。如果未在范围中包含此错误,则会发生此错误。请参阅this

答案 3 :(得分:0)

因为你从java类生成访问令牌。你可以从你的facebook个人资料页面设置你管理应用程序链接中的用户所需的权限,并在这里获取访问令牌.....