如何使用 PHP SDK v5 从 Facebook 页面删除 post
how to delete a post from Facebook page using PHP SDK v5
我正在使用 Facebook PHP SDK v5 将 post 发送到我管理的页面。当 posting a link 到页面时,下面的代码非常有效。但是,当我尝试修改此代码以删除 post 时,它一直返回错误:
Graph returned a page request error: Unknown path components: /xxxxxxx_xxxxxxxxx
xxxxxxx_xxxxxxxxx 是我要删除的 postID
我不知道如何调整我的工作代码以删除 post 而不是发布它们。有谁知道如何进行这项工作?
将 post 发布到页面的工作代码:
<?php
function facebook(){
include_once $_SERVER['DOCUMENT_ROOT']."/Facebook/autoload.php";
$permissions = ['manage_pages', 'publish_pages'];
$callback = "https://www.my-domain.com/my-callback-url.html?fb=redirect";
$pageID = 'xxxxxxxxxxxx';
$linkToPost = 'https://www.test-post.com';
$fb = new Facebook\Facebook([
'app_id' => 'xxxxxxxxxxx',
'app_secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxx',
'default_graph_version' => 'v2.10',
]);
$helper = $fb->getRedirectLoginHelper();
try {
if (isset($_SESSION['facebook_access_token'])) {
$accessToken = $_SESSION['facebook_access_token'];
} else {
$accessToken = $helper->getAccessToken();
}
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
$res['error'] = 'Error: Graph returned a session error: ' . $e->getMessage();
return $res;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
$res['error'] = 'Error: Facebook SDK returned a session error: ' . $e->getMessage();
return $res;
}
if (isset($accessToken)) {
if (isset($_SESSION['facebook_access_token'])) {
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
} else {
// getting short-lived access token
$_SESSION['facebook_access_token'] = (string) $accessToken;
// OAuth 2.0 client handler
$oAuth2Client = $fb->getOAuth2Client();
// Exchanges a short-lived access token for a long-lived one
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
$_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;
// setting default access token to be used in script
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
}
// getting basic info about user
try {
$profile_request = $fb->get('/me');
$profile = $profile_request->getGraphNode();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
$res['error'] = 'Error: Graph returned a profile request error: ' . $e->getMessage();
session_destroy();
return $res;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
$res['error'] = 'Error: Facebook SDK returned a profile request error: ' . $e->getMessage();
return $res;
}
$response = $fb->get('/me/accounts', (string) $accessToken);
foreach ($response->getDecodedBody() as $allPages) {
foreach ($allPages as $page ) {
if (isset($page['id']) && (string)$page['id'] == $pageID) {
$pageAccessToken = (string) $page['access_token'];
break;
}
}
}
try{
$post = $fb->post('/'.$pageID.'/feed', array('link' => $linkToPost), $pageAccessToken);
$post = $post->getGraphNode()->asArray();
$res['success'] = "Successfully Posted To Facebook. The ID of this post is: ".$post['id'];
return $res;
}catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
$res['error'] = 'Error: Graph returned a page request error: ' . $e->getMessage();
session_destroy();
return $res;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
$res['error'] = 'Error: Facebook SDK returned a page request error: ' . $e->getMessage();
return $res;
}
}else{
$loginUrl = $helper->getLoginUrl($callback, $permissions);
$res['login'] = $loginUrl;
return $res;
}
}
?>
我尝试修改上面的工作代码以删除 posts。不工作:
基本上我改变了:
$post = $fb->post('/'.$pageID.'/feed', array('link' => $linkToPost), $pageAccessToken);
收件人:
$post = $fb->delete('/'.$pageID.'/feed/'.$postIDtoDelete ,array(), $pageAccessToken);
代码:
<?php
function facebook(){
include_once $_SERVER['DOCUMENT_ROOT']."/Facebook/autoload.php";
$permissions = ['manage_pages', 'publish_pages'];
$callback = "https://www.my-domain.com/my-callback-url.html?fb=redirect";
$pageID = 'xxxxxxxxxxxx';
$postIDtoDelete = 'xxxxxxx_xxxxxxxxx';
$linkToPost = 'https://www.test-post.com';
$fb = new Facebook\Facebook([
'app_id' => 'xxxxxxxxxxx',
'app_secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxx',
'default_graph_version' => 'v2.10',
]);
$helper = $fb->getRedirectLoginHelper();
try {
if (isset($_SESSION['facebook_access_token'])) {
$accessToken = $_SESSION['facebook_access_token'];
} else {
$accessToken = $helper->getAccessToken();
}
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
$res['error'] = 'Error: Graph returned a session error: ' . $e->getMessage();
return $res;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
$res['error'] = 'Error: Facebook SDK returned a session error: ' . $e->getMessage();
return $res;
}
if (isset($accessToken)) {
if (isset($_SESSION['facebook_access_token'])) {
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
} else {
// getting short-lived access token
$_SESSION['facebook_access_token'] = (string) $accessToken;
// OAuth 2.0 client handler
$oAuth2Client = $fb->getOAuth2Client();
// Exchanges a short-lived access token for a long-lived one
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
$_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;
// setting default access token to be used in script
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
}
// getting basic info about user
try {
$profile_request = $fb->get('/me');
$profile = $profile_request->getGraphNode();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
$res['error'] = 'Error: Graph returned a profile request error: ' . $e->getMessage();
session_destroy();
return $res;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
$res['error'] = 'Error: Facebook SDK returned a profile request error: ' . $e->getMessage();
return $res;
}
$response = $fb->get('/me/accounts', (string) $accessToken);
foreach ($response->getDecodedBody() as $allPages) {
foreach ($allPages as $page ) {
if (isset($page['id']) && (string)$page['id'] == $pageID) {
$pageAccessToken = (string) $page['access_token'];
break;
}
}
}
try{
$post = $fb->delete('/'.$pageID.'/feed/'.$postIDtoDelete ,array(), $pageAccessToken);
$res['success'] = "Successfully Deleted Posted From Facebook. Response is:".$post;
return $res;
}catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
$res['error'] = 'Error: Graph returned a page request error: ' . $e->getMessage();
session_destroy();
return $res;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
$res['error'] = 'Error: Facebook SDK returned a page request error: ' . $e->getMessage();
return $res;
}
}else{
$loginUrl = $helper->getLoginUrl($callback, $permissions);
$res['login'] = $loginUrl;
return $res;
}
}
?>
没关系,我只需要编辑:
$post = $fb->delete('/'.$pageID.'/feed/'.$postIDtoDelete ,array(), $pageAccessToken);
收件人:
$post = $fb->delete('/'.$postIDtoDelete ,array(), $pageAccessToken);
现在工作正常
我正在使用 Facebook PHP SDK v5 将 post 发送到我管理的页面。当 posting a link 到页面时,下面的代码非常有效。但是,当我尝试修改此代码以删除 post 时,它一直返回错误:
Graph returned a page request error: Unknown path components: /xxxxxxx_xxxxxxxxx
xxxxxxx_xxxxxxxxx 是我要删除的 postID
我不知道如何调整我的工作代码以删除 post 而不是发布它们。有谁知道如何进行这项工作?
将 post 发布到页面的工作代码:
<?php
function facebook(){
include_once $_SERVER['DOCUMENT_ROOT']."/Facebook/autoload.php";
$permissions = ['manage_pages', 'publish_pages'];
$callback = "https://www.my-domain.com/my-callback-url.html?fb=redirect";
$pageID = 'xxxxxxxxxxxx';
$linkToPost = 'https://www.test-post.com';
$fb = new Facebook\Facebook([
'app_id' => 'xxxxxxxxxxx',
'app_secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxx',
'default_graph_version' => 'v2.10',
]);
$helper = $fb->getRedirectLoginHelper();
try {
if (isset($_SESSION['facebook_access_token'])) {
$accessToken = $_SESSION['facebook_access_token'];
} else {
$accessToken = $helper->getAccessToken();
}
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
$res['error'] = 'Error: Graph returned a session error: ' . $e->getMessage();
return $res;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
$res['error'] = 'Error: Facebook SDK returned a session error: ' . $e->getMessage();
return $res;
}
if (isset($accessToken)) {
if (isset($_SESSION['facebook_access_token'])) {
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
} else {
// getting short-lived access token
$_SESSION['facebook_access_token'] = (string) $accessToken;
// OAuth 2.0 client handler
$oAuth2Client = $fb->getOAuth2Client();
// Exchanges a short-lived access token for a long-lived one
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
$_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;
// setting default access token to be used in script
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
}
// getting basic info about user
try {
$profile_request = $fb->get('/me');
$profile = $profile_request->getGraphNode();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
$res['error'] = 'Error: Graph returned a profile request error: ' . $e->getMessage();
session_destroy();
return $res;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
$res['error'] = 'Error: Facebook SDK returned a profile request error: ' . $e->getMessage();
return $res;
}
$response = $fb->get('/me/accounts', (string) $accessToken);
foreach ($response->getDecodedBody() as $allPages) {
foreach ($allPages as $page ) {
if (isset($page['id']) && (string)$page['id'] == $pageID) {
$pageAccessToken = (string) $page['access_token'];
break;
}
}
}
try{
$post = $fb->post('/'.$pageID.'/feed', array('link' => $linkToPost), $pageAccessToken);
$post = $post->getGraphNode()->asArray();
$res['success'] = "Successfully Posted To Facebook. The ID of this post is: ".$post['id'];
return $res;
}catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
$res['error'] = 'Error: Graph returned a page request error: ' . $e->getMessage();
session_destroy();
return $res;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
$res['error'] = 'Error: Facebook SDK returned a page request error: ' . $e->getMessage();
return $res;
}
}else{
$loginUrl = $helper->getLoginUrl($callback, $permissions);
$res['login'] = $loginUrl;
return $res;
}
}
?>
我尝试修改上面的工作代码以删除 posts。不工作:
基本上我改变了:
$post = $fb->post('/'.$pageID.'/feed', array('link' => $linkToPost), $pageAccessToken);
收件人:
$post = $fb->delete('/'.$pageID.'/feed/'.$postIDtoDelete ,array(), $pageAccessToken);
代码:
<?php
function facebook(){
include_once $_SERVER['DOCUMENT_ROOT']."/Facebook/autoload.php";
$permissions = ['manage_pages', 'publish_pages'];
$callback = "https://www.my-domain.com/my-callback-url.html?fb=redirect";
$pageID = 'xxxxxxxxxxxx';
$postIDtoDelete = 'xxxxxxx_xxxxxxxxx';
$linkToPost = 'https://www.test-post.com';
$fb = new Facebook\Facebook([
'app_id' => 'xxxxxxxxxxx',
'app_secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxx',
'default_graph_version' => 'v2.10',
]);
$helper = $fb->getRedirectLoginHelper();
try {
if (isset($_SESSION['facebook_access_token'])) {
$accessToken = $_SESSION['facebook_access_token'];
} else {
$accessToken = $helper->getAccessToken();
}
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
$res['error'] = 'Error: Graph returned a session error: ' . $e->getMessage();
return $res;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
$res['error'] = 'Error: Facebook SDK returned a session error: ' . $e->getMessage();
return $res;
}
if (isset($accessToken)) {
if (isset($_SESSION['facebook_access_token'])) {
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
} else {
// getting short-lived access token
$_SESSION['facebook_access_token'] = (string) $accessToken;
// OAuth 2.0 client handler
$oAuth2Client = $fb->getOAuth2Client();
// Exchanges a short-lived access token for a long-lived one
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
$_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;
// setting default access token to be used in script
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
}
// getting basic info about user
try {
$profile_request = $fb->get('/me');
$profile = $profile_request->getGraphNode();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
$res['error'] = 'Error: Graph returned a profile request error: ' . $e->getMessage();
session_destroy();
return $res;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
$res['error'] = 'Error: Facebook SDK returned a profile request error: ' . $e->getMessage();
return $res;
}
$response = $fb->get('/me/accounts', (string) $accessToken);
foreach ($response->getDecodedBody() as $allPages) {
foreach ($allPages as $page ) {
if (isset($page['id']) && (string)$page['id'] == $pageID) {
$pageAccessToken = (string) $page['access_token'];
break;
}
}
}
try{
$post = $fb->delete('/'.$pageID.'/feed/'.$postIDtoDelete ,array(), $pageAccessToken);
$res['success'] = "Successfully Deleted Posted From Facebook. Response is:".$post;
return $res;
}catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
$res['error'] = 'Error: Graph returned a page request error: ' . $e->getMessage();
session_destroy();
return $res;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
$res['error'] = 'Error: Facebook SDK returned a page request error: ' . $e->getMessage();
return $res;
}
}else{
$loginUrl = $helper->getLoginUrl($callback, $permissions);
$res['login'] = $loginUrl;
return $res;
}
}
?>
没关系,我只需要编辑:
$post = $fb->delete('/'.$pageID.'/feed/'.$postIDtoDelete ,array(), $pageAccessToken);
收件人:
$post = $fb->delete('/'.$postIDtoDelete ,array(), $pageAccessToken);
现在工作正常