facebook - 如何发布到 Facebook 页面(如何获取页面访问 token + 用户访问 token )

标签 facebook access-token

当我以不同的 Facebook 用户(不是页面管理员)的身份使用我的应用时,我正在尝试弄清楚如何在 Facebook 页面墙上发帖。

我在测试时收到一系列错误消息: 异常:200:用户未授权应用程序执行此操作

页面管理员已访问该应用并接受以下权限:publish_stream、manage_pages、offline_access

这是我打算使用的代码:

// Insert Page Administrators ID here 
// This user is not the same user that is currently logged in and using the app
// This user is the page administrator who has authorised: 
// - manage_pages
// - offline_access
// - publish_stream

$user_id = '123456789'; 

// Insert Page ID here
$page_id = '123456789'; 

$accounts = $facebook->api('/'.$user_id.'/accounts');

foreach($accounts['data'] as $account)
{
  if($account['id'] == $page_id)
  {
    $page_access_token = $account['access_token'];
    echo "<p>Page Access Token: $page_access_token</p>";
  }
}

// publish to the wall on your page
try
{
  $result = $facebook->api(array( "uid" => $page_id, 
                                  "method" => "stream.publish",
                                  "access_token" => $page_access_token,
                                  "message" => $message, ));
}
catch (FacebookApiException $e)
{
  error_log('FB Error: Could not post on Page Wall. Page ID: ' . $page_id);
  error_log('FB Error Message: ' . $e);
}

注意:上面的代码中可能存在 PHP 错误,因为我只是即时拼接它,但我需要更正的与其说是 PHP 错误,不如说是我对我打算如何去做的逻辑理解过程。

问题: 没有页面管理员的事件用户访问 token ,我无法访问 $user_id/accounts 信息。

我想要达到的最终结果是: 1.) 普通的 FB 用户进入应用程序并提交表单 2.) 应用程序在不属于 FB 用户的 FB 页面墙上发布消息,但之前已获得页面管理员授权,具有以下权限 manage_pages、publish_stream 和 offline_access

Q1。既然页面管理员已经接受了适当的权限,为什么我不能在页面管理员用户没有登录网站的情况下只生成一个事件用户访问 token ?

Q2。当以不同的用户身份登录 Facebook 时(这就是我不使用/me/accounts 的原因),有没有一种方法可以获得页面管理员 user_id 的/$user_id/accounts 的等价物?

Q3。请确认我对需要页面访问 token 才能发布到页面墙的理解是正确的(或者我是否需要页面管理员的用户 access_token - 请参阅问题 1)?

Q4。任何人都有关于每种类型的 access_token 实际可以访问什么的方便资源?

如果您需要更多信息,请告诉我。 过去几天我一直在研究这个,但我被卡住了。

谢谢!

最佳答案

  1. 您可以向页面管理员询问 manage_pages 以及 offline_access。我在我的生产应用中执行此操作,以便能够将预定的帖子发布到页面的墙上。

  2. 没有。不可能。这就是请求权限的意义所在。为什么不是每个人都能管理其他人的页面。如果您可以管理任何人的页面而无需他们授予您访问权限,您能想象一下吗?!?

  3. 要作为页面发布到页面,您需要一个页面访问 token 。要以用户身份发布到页面墙,您需要用户访问 token 。

  4. 是的,请参阅:https://developers.facebook.com/docs/reference/api/permissionshttps://developers.facebook.com/docs/authentication/

如果您对其中任何一个有进一步的疑问,请提出一个新问题。对于 stackoverflow 的用户来说,一个问题被 4 个问题击中,然后被问到每个问题的后续问题是不公平的。

关于facebook - 如何发布到 Facebook 页面(如何获取页面访问 token + 用户访问 token ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8922979/

相关文章:

facebook - 通过图形 API 检索 facebook 用户墙帖子

facebook - 如何在不为其创建公共(public)页面的情况下测试 Facebook 页面选项卡应用程序?

android - Google Api 刷新 token 说明

github - Netbeans JGit github 密码验证已弃用,。如何重置?

ios4 - 通过 Facebook IOS SDK 发布签到

JavaScript/AngularJS : How do I make click event trigger parent?

javascript - 为什么将授权从无更改为 GM_xmlhttpRequest 会破坏我的代码?

ios - 如何在没有 safari 的情况下完全在应用程序内部打开 url 并获取访问 token ?

php - 如何使用 Google API 客户端刷新 token ?

rest - 将 token 传递给 GET 请求 xamarin 表单