当我作为不同的 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 错误,而是更多的是我对如何进行此过程的逻辑理解。
问题:
如果没有页面管理员的活动用户访问令牌,我无法访问 $user_id/accounts 信息。
我想要实现的最终结果是:
1.) 普通 FB 用户访问应用程序并提交表单
2.) 该应用程序在 FB 页面墙上发布消息,该页面不属于 FB 用户所有,但之前已获得页面管理员授权,具有以下权限:manage_pages、publish_stream 和offline_access
Q1.由于页面管理员已接受适当的权限,为什么我不能在实际页面管理员用户登录网站的情况下生成活动用户访问令牌?
Q2。当我以其他用户身份登录 Facebook 时,有没有办法获得相当于页面管理员 user_id 的 /$user_id/accounts 的值(这就是我不使用 /me/accounts 的原因)?
Q3。请确认我对需要页面访问令牌发布到页面墙的理解是正确的(或者我是否需要页面管理员的用户 access_token - 参见问题 1)?
Q4。任何人都有关于每种类型的 access_token 实际可以访问的内容的方便资源吗?
如果您需要更多信息,请告诉我。
过去几天我一直在研究这个问题,但我陷入了困境。
Thanks!