当我将我的应用程序用作不同的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时,有没有办法可以获得与Page Administrator user_id相当的/ $ user_id / accounts?(这就是为什么我不使用/ me / accounts)?
Q3。请确认我对需要页面访问令牌发布到页面墙的理解是正确的(或者我是否需要页面管理员的用户access_token - 请参阅Q1)?
Q4。任何人都有一个方便的资源,每种类型的access_token可以实际访问什么?
如果您需要更多信息,请告诉我们。 我花了最后几天研究这个问题而且我被卡住了。
谢谢!
答案 0 :(得分:3)
您可以向{@ 1}}页面管理员询问manage_pages
。我在我的制作应用程序中执行此操作,以便能够将预定的帖子发布到页面上。壁。
不。不可能。这就是要求权限的全部内容。为什么不是每个人都可以管理其他人的页面。如果您可以管理任何人的页面而没有他们授予您访问权限,您能成像吗?!?
要将页面作为页面发布,您需要一个页面访问令牌。要以用户身份发布到网页墙,您需要一个用户访问令牌。
是的,请参阅:https://developers.facebook.com/docs/reference/api/permissions和https://developers.facebook.com/docs/authentication/
如果您对其中任何一个有其他疑问,请提出新问题。对于stackoverflow的用户来说,在一个问题中遇到4个问题然后被问到每个问题的后续问题都不公平。
答案 1 :(得分:2)
我在Django做过:
获取Page_access_token的步骤:
facebook_page_id=360729583957969
graph = GraphAPI(request.facebook.user.oauth_token.token)
page_access_token=graph.get(facebook_page_id+'?fields=access_token')
这样您就可以获得页面访问令牌。
你可以在Fb GraphAPIexplorer上查看这个东西:
http://developers.facebook.com/tools/explorer
GET URL: fb_page_id?fields=access_token
例如:360729583957969?fields=access_token
这将给你page_access_token