通过spring社交InsufficientPermissionException发布到Facebook墙

时间:2015-07-08 07:47:10

标签: java spring facebook spring-social-facebook

我正在尝试使用spring social制作一个非常简单的应用程序,该应用程序不适用于公开。我想要实现的是发布到我的墙上或我管理的页面。

尝试让facebook访问他们拒绝的manage_pages权限,因为他们说"您不需要申请这些权限,因为您的博客或CMS已与您管理的应用集成。作为App管理员,您可以访问这些权限并发布到您的时间线或您管理的页面。您可以通过将其添加为应用程序的开发人员来提供对其他用户的访问权限。"

现在在代码中。我改变了一点春天社交展示的例子。我的情况如下: 1)我通过我的应用程序登录Facebook 2)尝试获取我管理的页数 3)张贴到我的墙上。

对于第二步,我使用此代码:

if (facebook.pageOperations().getAccounts() != null) {
        System.out.println("SIZE OF ACCCOUNTS IS: " + facebook.pageOperations().getAccounts().size());
    }

帐户的大小始终为0.所以这意味着虽然我应该能够发布到我是管理员的页面,但我甚至看不到它们。我是对的吗?

现在第三步:

facebook.feedOperations().updateStatus("I'm trying out Spring Social!");
    facebook.feedOperations().post(new PostData("me").message("I'm trying out Spring Social!")
        .link("http://www.springsource.org/spring-social", null, "Spring Social", "The Spring Social Project", "Spring Social is an extension to Spring to enable applications to connect with service providers."));
    System.out.println("FEED POSTED");

这两次尝试均失败,但出现以下异常:

org.springframework.social.InsufficientPermissionException:此操作的权限不足。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您似乎没有在登录时询问/授予您所需的权限。您需要做的第一件事是实现登录并确保在登录期间包含正确的范围即权限(manage_pages)。由于您的要求还包括发布,请根据您是要作为网页还是自己发布来包含这些权限publish_pages和/或publish_actions。例如如果你使用JS SDK,它看起来像这样:

 FB.login(function(response) {
   // handle the response
 }, {scope: 'manage_pages, publish_pages, publish_actions'});

执行此操作后,在登录时,系统将提示您是否要授予这些权限。在授予时,您的访问令牌将包含这些权限,您将能够拨打/me/accounts,这将为您提供您管理的页面列表及其各自的访问权限。它看起来像这样:

"data": [
    {
      "access_token": "CAACEdEose0cBAAy...",
      "category": "Food/Grocery",
      "name": "Page Name",
      "id": "1234567890",
      "perms": [
        "ADMINISTER",
        "EDIT_PROFILE",
        "BASIC_ADMIN"
      ]
    },
    ...
    ]

如果您想以自己的身份发布,则可以继续使用当前的用户访问令牌。否则,如果要作为页面发布,请从上面的响应中获取页面访问令牌,并使用它来针对页面ID发出POST请求。

如果您是为自己而不是为公众创建应用,那么只要您是管理员或在应用中担任某个角色,您就无需提交这些权限以供审核。

您可以找到更多上下文here