【问题标题】:The user hasn't authorized the application to perform this action用户尚未授权应用程序执行此操作
【发布时间】:2012-02-01 19:04:47
【问题描述】:

我正在开发一个简单的 java 程序来自动发布(文章)到我的 facebook 有趣页面。我创建了一个应用程序并使用 url 获得了 access_token:https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=APP_ID&client_secret=CLIENR_SECRET。我使用这个 java 代码发布到有趣的页面墙上:

String url = "https://graph.facebook.com/" + PAGE_ID + "/feed"
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("access_token", accessToken));
nvps.add(new BasicNameValuePair("message", item.getTitle()));
HttpClient client = new DefaultHttpClient(params);
HttpPost httpost = new HttpPost(url);
httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
HttpResponse response = client.execute(httpost);
HttpEntity entity = response.getEntity();

我收到了这个错误:

{
"error": {
      "message": "(#200) The user hasn't authorized the application to perform this action",
      "type": "OAuthException"
   }
}

如何授权我的应用发布到我的趣味页面? 提前致谢

遵循

的推荐

【问题讨论】:

标签: java facebook access-token


【解决方案1】:

哇,我看到同样的问题每天至少被问一次。

您将需要询问manage_pagespublish_stream。页面管理员通过身份验证后,查询me/accounts 并从该列表中获取页面的访问令牌。使用该页面的访问令牌,您可以发布到me/feed

【讨论】:

  • 我在管理员验证应用程序后获得了 access_token,但消息发布为“管理员”而不是“页面”,这对于向喜欢我的页面的人显示更新很重要。谢谢。
  • 嗯,下面你说的恰恰相反是你正在寻找的“但仍然有问题:发送的帖子是“作为管理员”而不是“作为页面””所以是哪一个?将其作为页面发布到页面,还是作为管理员发布到页面?
  • 问题已解决。我能够以页面而不是管理员的身份发布到页面。我在上面放了一个解释说明。谢谢。
  • 是的,这就是我在回答中所描述的。如何作为页面发布到页面。 :) 这个问题平均每天被问一次。 :O
  • 这里的关键是“publish_stream”和“manage_pages”权限。只有“manage_pages”你会得到一个反弹。
【解决方案2】:

简单,你只需要询问权限..就是这样..

String[] permissions = { "offline_access", "publish_stream", "user_photos", "publish_checkins","photo_upload" };
mFacebook.authorize(MainActivity.this, permissions,
            new LoginDialogListener());

【讨论】:

  • 它在我的情况下也有效,但在哪里放置此代码。以及如何知道该用户是否已经允许这样做。
  • @KrishnakantDalal 我没有得到“在哪里放置此代码”。当用户第一次尝试使用 Facebook 登录时,Facebook UI 会询问用户的权限。而且它只问一次。
【解决方案3】:

您正在使用应用程序access_token,而您应该将access_token 用于用户或页面。

  • 用户的access_token 存在于signed_request 中(在cookie 中,或传递到应用程序画布)。
  • 一旦用户向您的应用授予manage_pages 权限,页面access_tokenaccounts 连接中可用。

更新:
要以管理员身份发帖,您需要用户的 access_token。
要作为主页发布,您需要主页 access_token

【讨论】:

  • 我使用 url:facebook.com/dialog/oauth/… 获得了页面管理员的用户 access_token,然后帖子转到页面墙。但是仍然有问题:发送的帖子是“作为管理员”而不是“作为页面”,所以它不会出现在喜欢我有趣页面的人上,它会出现在“每个人(最近)”
  • 应该使用“页面访问令牌”作为 facebook 文档页面 developers.facebook.com/docs/reference/api/page 中的描述,而不是用户(管理员)访问令牌。感谢 Juicy Scripter
  • @MokhlisseBadre,欢迎来到Stack Overflow。别忘了accept answers ;)
【解决方案4】:

Facebook 已将 publish_stream 权限更改为 publish_actions。所以你需要同时申请publish_actionsmanage_pages权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多