【发布时间】:2012-02-13 22:20:01
【问题描述】:
当我作为不同的 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
第一季度。既然页面管理员已经接受了适当的权限,为什么我不能只生成一个活动用户访问令牌,而不需要实际的页面管理员用户登录网站?
第二季度。当以其他用户身份登录 Facebook 时(这就是我不使用 /me/accounts 的原因),有没有一种方法可以获得页面管理员 user_id 的 /$user_id/accounts 等效项?
第三季度。请确认我对需要页面访问令牌才能发布到页面墙的理解是正确的(或者我是否需要页面管理员的用户 access_token - 请参阅 Q1)?
第四季度。任何人都有关于每种类型的 access_token 可以实际访问什么的方便资源?
如果您需要更多信息,请告诉我。 过去几天我一直在努力解决这个问题,但我陷入了困境。
谢谢!
【问题讨论】:
标签: facebook access-token