我正在尝试将信息发布到Facebook页面,但是作为页面 - 而不是我自己的Facebook个人资料。我正在使用Facebook PHP SDK的第5版。任何想法如何实现这一目标?我的下面的代码很好地发布到Facebook页面,但它将消息作为我自己的个人资料而不是页面发布。
session_start();
define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__ . '/src/facebook-sdk-v5/');
require_once __DIR__ . '/src/facebook-sdk-v5/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => 'appid',
'app_secret' => 'secretid',
'default_graph_version' => 'v2.2',
]);
$helper = $fb->getRedirectLoginHelper();
try {
$accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
if (isset($accessToken)) {
$_SESSION['facebook_access_token'] = (string) $accessToken;
$linkData = [
'link' => 'http://www.example.com',
'message' => 'User provided message',
];
try {
$response = $fb->post('/294673057366719/feed', $linkData, $accessToken);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: '.$e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: '.$e->getMessage();
exit;
}
$graphNode = $response->getGraphNode();
echo 'Posted with id: '.$graphNode['id'];
} else {
$permissions = ['publish_pages', 'manage_pages'];
$loginUrl = $helper->getLoginUrl('http://app.co.uk:8888/facebook/', $permissions);
echo '<a href="'.$loginUrl.'">Log in</a>';
}
答案 0 :(得分:0)
感谢。我通过以下方式获取了页面的访问令牌:
在此处获取我的Facebook页面的“短命”访问令牌: https://developers.facebook.com/tools/explorer?method=GET&path=me%3Ffields%3Dname%2Cabout&version=v2.4
然后我将“短期”令牌传递给此URL以返回一个长期存在的令牌: https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=clientid&client_secret=secretid&fb_exchange_token=shorttoken
您现在拥有Facebook页面的非过期访问令牌