如何使用PHP SDK v5从Facebook页面中删除帖子

问题描述:

我正在使用Facebook PHP SDK v5将帖子发布到我管理的页面。下面的代码在发布页面链接时效果很好。然而,当我试图修改此代码以删除它使返回错误后:如何使用PHP SDK v5从Facebook页面中删除帖子

Graph returned a page request error: Unknown path components: /xxxxxxx_xxxxxxxxx

xxxxxxx_xxxxxxxxx的是,我试图删除

我无法弄清楚如何调整帖子ID我的工作代码删除帖子,而不是发布它们。有谁知道如何使这项工作?

工作代码后发布到页面:

<?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; 
    } 
} 
?> 

我在上面的修改工作代码删帖的尝试。不工作:

基本上我改变了:

要:

$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); 

现在的工作罚款