1

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

试图要求 facebook 访问 manage_pages 权限,他们拒绝了,因为正如他们所说“您不需要请求这些权限,因为您的博客或 CMS 与您管理的应用程序集成。作为应用程序管理员,您已经可以访问这些权限并且发布到您的时间线或您管理的页面。您可以通过将其他用户添加为您的应用程序的开发人员来向他们提供访问权限。”

现在在代码中。我修改了一些春季社交展示示例。我的情况如下: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:此操作权限不足。

有人可以帮忙吗?

4

1 回答 1

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 请求。

如果您是为自己而不是为公众创建应用程序,那么您无需提交这些权限以供审核,前提是您是管理员或在应用程序中具有某些角色。

您可能可以在此处找到更多上下文。

于 2015-07-13T10:52:33.937 回答