我正在尝试解决一个问题,即如何在我的应用中以不同的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.有没有办法获取/$user_id/accounts的等效值,以便作为不同用户(原因是我不使用/me/accounts)登录Facebook时使用的页面管理员user_id?
Q3.请确认我对需要页面访问令牌才能在页面墙上发布内容的理解是正确的(或者我是否需要页面管理员的用户访问令牌-参见Q1)?
Q4.是否有一个方便的资源,可以了解每种类型的访问令牌实际上可以访问什么?
如果您需要更多信息,请告诉我。 我已经花了几天时间来解决这个问题,但还是卡住了。
谢谢!