我使用以下代码使用PHP将帖子发布到Facebook。我只剩下一个问题...我想知道如何在发布帖子之前为我的页面获取访问令牌,因为访问令牌不是永久性的。
function status_update($status_text)
{
require_once("facebook/facebook.php");
$config = array();
$config['pageId'] = 'xxxxxxxxxx';
$config['appId'] = 'yyyyyyyyyy';
$config['secret'] = 'zzzzzzzzzzzzz';
$config['fileUpload'] = false;
$fb = new Facebook($config);
$params = array(
"access_token" => $config['appId'] . "|" . $config['secret'],
"message" => $status_text,
"link" => "http://www.pontikis.net/blog/auto_post_on_facebook_with_php",
"picture" => "http://i.imgur.com/lHkOsiH.png",
"name" => "How to Auto Post on Facebook with PHP",
"caption" => "www.pontikis.net",
"description" => "Automatically post on Facebook with PHP using Facebook PHP SDK. How to create a Facebook app. Obtain and extend Facebook access tokens. Cron automation."
);
try
{
$ret = $fb->api('/xxxxxxxxxx/feed', 'POST', $params);
echo 'Successfully posted to Facebook';
}
catch(Exception $e)
{
echo $e->getMessage();
}
}
} ?>
答案 0 :(得分:1)
我已经建立了一个关于四个月前的Facebook应用程序,因此我不知道是否发生了任何变化。但我会尝试帮助。
当您获得对您管理的页面的访问权限时,您将获得一个非过期的访问令牌,而不是60天,而不是几个小时,而是永久访问令牌。
所以,假设您有一个正常的应用访问令牌,并且您希望获得权限,比如发布到您的页面。您想检查您是否拥有权限,如果没有:
// PHP condition here to show this piece of JS only if user has no permission 'manage_pages'
// see *1
FB.login(function(response) {
if (response.authResponse) {
FB.api('/me/permissions?access_token={CURRENT_TOKEN}', function (response) {
// Do whatever you want here, you have a response
// For example:
if (response['data'][0]['manage_pages'] === undefined) {
// Will refresh if you deny when Facebook modal window appears
top.location.href = '{SELF_URL}';
}
});
} else {
// ...
}
}, {scope: 'manage_pages'});
* 1 - 您可以通过调用->api('/me/permissions?access_token={YOUR_TOKEN}');
来检索上述代码段服务器端来检索您的权限
* 2 - 在授权申请获得您的权利时,您还应具有publish_actions
publish_stream
所要求的初始权利
答案 1 :(得分:0)
按照FB docs中的描述进行操作:
https://developers.facebook.com/docs/facebook-login/access-tokens/#pagetokens
您可以在Graph Explorer中执行此操作: