使用 PHP 和 SDK 5.0 像页面一样在 Facebook 中发布
Posting in Facebook with PHP and SDK 5.0 like a page
我正在尝试 post 进入我作为管理员的 Facebook 页面,并使用 php 代码。问题是,当我在我的个人网页中添加 post 时,我想将其发布到 Facebook 的公司页面中。它有效,我得到了 post ID,但是,当我去 Facebook 时,我看到它就像一个通知 "pepito shares a link with",但它不在传记墙上。 )
这是我设置的权限 'manage_pages', 'publish_actions', 'pages_manage_instant_articles'.
这是我的代码:
<?php
unset($_SESSION['facebook_access_token']);
$fbok = false;
session_start();
define('FACEBOOK_SDK_V5_SRC_DIR', 'facebook-sdk-v5/');
require_once 'facebook-sdk-v5/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => 'XXXXXXXXX',
'app_secret' => 'XXXXXXXXXX',
'default_graph_version' => 'v2.6',
]);
if(!isset($_GET['error'])){
if(isset($_SESSION['facebook_access_token'])){
try {
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
$requestUserName = $fb->request('GET', '/inmoejemplognu?fields=id,name');
$batch = [ 'user-profile' => $requestUserName ];
$responses = $fb->sendBatchRequest($batch);
//$responses = json_decode($response->getBody());
$data = [];
$id = "";
foreach ($responses as $key => $response) {
if (!$response->isError()) {
$data = json_decode($response->getBody());
if($data->name == "Alquiler Vivienda"){
$id = $data->id;
}
}
}
echo $id;
$fbok = true;
} catch(Facebook\Exceptions\FacebookResponseException $e) {
$helper = $fb->getRedirectLoginHelper();
$permissions = ['manage_pages', 'publish_actions', 'pages_manage_instant_articles']; // optional
$callback = 'http://pablognu.tigrimigri.com/login-callback.php';
$loginUrl = $helper->getLoginUrl($callback, $permissions);
header('Location: '. $loginUrl);
}
} else {
$helper = $fb->getRedirectLoginHelper();
$permissions = ['manage_pages', 'publish_actions', 'pages_manage_instant_articles']; // optional
$callback = 'http://pablognu.tigrimigri.com/login-callback.php';
$loginUrl = $helper->getLoginUrl($callback, $permissions);
header('Location: '. $loginUrl);
}
}
if($fbok){
echo "Podemos publicar";
$linkData = [
'link' => 'http://www.google.es',
'message' => 'Un ejemplo de publicacion',
];
try {
$response = $fb->post('/'.$id.'/feed', $linkData, $_SESSION['facebook_access_token']);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
unset($_SESSION['facebook_access_token']);
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 {
// echo "No se ha autorizado el acceso para publicar en facebook";
}
?>
感谢大家
如果你想 post "as Page"(我想这就是你想要实现的),你必须使用 publish_pages
,而不是 publish_actions
。而且您必须使用页面令牌。文档对此非常具体:https://developers.facebook.com/docs/graph-api/reference/v2.6/page/feed#publish
关于访问令牌:
我正在尝试 post 进入我作为管理员的 Facebook 页面,并使用 php 代码。问题是,当我在我的个人网页中添加 post 时,我想将其发布到 Facebook 的公司页面中。它有效,我得到了 post ID,但是,当我去 Facebook 时,我看到它就像一个通知 "pepito shares a link with",但它不在传记墙上。 )
这是我设置的权限 'manage_pages', 'publish_actions', 'pages_manage_instant_articles'.
这是我的代码:
<?php
unset($_SESSION['facebook_access_token']);
$fbok = false;
session_start();
define('FACEBOOK_SDK_V5_SRC_DIR', 'facebook-sdk-v5/');
require_once 'facebook-sdk-v5/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => 'XXXXXXXXX',
'app_secret' => 'XXXXXXXXXX',
'default_graph_version' => 'v2.6',
]);
if(!isset($_GET['error'])){
if(isset($_SESSION['facebook_access_token'])){
try {
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
$requestUserName = $fb->request('GET', '/inmoejemplognu?fields=id,name');
$batch = [ 'user-profile' => $requestUserName ];
$responses = $fb->sendBatchRequest($batch);
//$responses = json_decode($response->getBody());
$data = [];
$id = "";
foreach ($responses as $key => $response) {
if (!$response->isError()) {
$data = json_decode($response->getBody());
if($data->name == "Alquiler Vivienda"){
$id = $data->id;
}
}
}
echo $id;
$fbok = true;
} catch(Facebook\Exceptions\FacebookResponseException $e) {
$helper = $fb->getRedirectLoginHelper();
$permissions = ['manage_pages', 'publish_actions', 'pages_manage_instant_articles']; // optional
$callback = 'http://pablognu.tigrimigri.com/login-callback.php';
$loginUrl = $helper->getLoginUrl($callback, $permissions);
header('Location: '. $loginUrl);
}
} else {
$helper = $fb->getRedirectLoginHelper();
$permissions = ['manage_pages', 'publish_actions', 'pages_manage_instant_articles']; // optional
$callback = 'http://pablognu.tigrimigri.com/login-callback.php';
$loginUrl = $helper->getLoginUrl($callback, $permissions);
header('Location: '. $loginUrl);
}
}
if($fbok){
echo "Podemos publicar";
$linkData = [
'link' => 'http://www.google.es',
'message' => 'Un ejemplo de publicacion',
];
try {
$response = $fb->post('/'.$id.'/feed', $linkData, $_SESSION['facebook_access_token']);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
unset($_SESSION['facebook_access_token']);
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 {
// echo "No se ha autorizado el acceso para publicar en facebook";
}
?>
感谢大家
如果你想 post "as Page"(我想这就是你想要实现的),你必须使用 publish_pages
,而不是 publish_actions
。而且您必须使用页面令牌。文档对此非常具体:https://developers.facebook.com/docs/graph-api/reference/v2.6/page/feed#publish
关于访问令牌: