Automatyczne wystawianie postów na firmowym facebooku


(northwest) #1

Witam serdecznie,
Mam profil na Facebooku firmowy oraz prywatny.
Chciałbym zrobić skrypt do automatycznej publikacji postów na moim profilu firmowym.

Mam taki skrypt:

 

 

 

require_once( 'Facebook/autoload.php' );

    

    $fb = new Facebook\Facebook([

      'app_id' => '0000000000000000000',

      'app_secret' => '123456789098765432123',

      'default_graph_version' => 'v2.5',

    ]);

     

    $helper = $fb->getRedirectLoginHelper();

    

    $_POST['backurl'] = str_replace("facebook_create.php", "facebook_create2.php", $_POST['backurl']);

    

    $permissions = ['email',  'manage_pages ', 'user_photos', 'publish_actions', 'publish_pages', 'pages_manage_instant_articles', 'public_profile', 'user_friends', 'pages_messaging', 'user_posts', 'user_website'];

    $loginUrl = $helper->getLoginUrl($_POST['backurl'], $permissions);

    header("location: ".$loginUrl);

 

 

oraz (facebook_create2.php):

 

 

require_once( 'Facebook/autoload.php' );

     

    $fb = new Facebook\Facebook([

          'app_id' => '0000000000000000000',

          'app_secret' => '123456789098765432123',

          'default_graph_version' => 'v2.5',

        ]);

      

    $helper = $fb->getRedirectLoginHelper();  

      

    try {  

      $accessToken = $helper->getAccessToken();  

    } catch(Facebook\Exceptions\FacebookResponseException $e) {  

      // When Graph returns an error  

      

      echo 'Graph returned an error: ' . $e->getMessage();  

      exit;  

    } catch(Facebook\Exceptions\FacebookSDKException $e) {  

      // When validation fails or other local issues  

     

      echo 'Facebook SDK returned an error: ' . $e->getMessage();  

      exit;  

    }  

     

     

    try {

      // Get the Facebook\GraphNodes\GraphUser object for the current user.

      // If you provided a 'default_access_token', the '{access-token}' is optional.

      $response = $fb->get('/me?fields=id,name,email,first_name,last_name', $accessToken->getValue());

    //  print_r($response);

    } catch(Facebook\Exceptions\FacebookResponseException $e) {

      // When Graph returns an error

      echo 'ERROR: Graph ' . $e->getMessage();

      exit;

    } catch(Facebook\Exceptions\FacebookSDKException $e) {

      // When validation fails or other local issues

      echo 'ERROR: validation fails ' . $e->getMessage();

      exit;

    }

    $me = $response->getGraphUser();

    //print_r($me);

    echo "<br/><br/><br/>";

    echo "<pre>";

    print_r($me);

    echo "</pre>";

    echo "<br/><br/><br/>";

    echo "Full Name: ".$me->getProperty('name')."<br>";

    echo "First Name: ".$me->getProperty('first_name')."<br>";

    echo "Last Name: ".$me->getProperty('last_name')."<br>";

    echo "Email: ".$me->getProperty('email')."<br>";

    echo "TOKEN: ".$accessToken."<br>";

    echo "Facebook ID: <a href='https://www.facebook.com/".$me->getProperty('id')."' target='_blank'>".$me->getProperty('id')."</a>"."<br>";

    

    

    

    echo "<br/><br/><br/>";

    echo "<pre>";

    print_r($_GET);

    echo "</pre>";

$finalna_data = date('Y-m-d', strtotime('+55 days', time()));

$tajny_token = $accessToken;



            $stmt = $db->prepare("UPDATE cms_admin_firma SET  facebook_enable=:facebook_enable, facebook_data=:facebook_data,  facebook_token=:facebook_token  WHERE gt_id=:gt_id;");            

            $stmt->bindValue(':facebook_enable', '1', PDO::PARAM_STR);

            $stmt->bindValue(':facebook_data',($finalna_data), PDO::PARAM_STR);

            $stmt->bindValue(':facebook_token',($tajny_token), PDO::PARAM_STR);

            $stmt->bindValue(':gt_id', ($_SESSION['cms_user_id']), PDO::PARAM_INT);

            $stmt->execute();

            $stmt->closeCursor();

 

Mój kod do dodawania postów (do crona):

 

$data_startu = date("Y-m-d", strtotime("-0 day"));

    

    $stmt = $db->prepare("SELECT gt_id, facebook_token  FROM cms_admin_firma WHERE facebook_enable = '1' and facebook_token <>'';");

    $stmt->execute();

    foreach ($stmt as $wartt) {

    

    

    

    define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__.'/Facebook/');

    require_once( __DIR__.'/Facebook/autoload.php');

    

    

    

    

    $fbData = array(

    'app_id' => '0000000000000000000',

              'app_secret' => '123456789098765432123',

              'default_graph_version' => 'v2.5',

    );

     

    $fb = new Facebook\Facebook($fbData);

     

    //// get following data from the db or just replace them ////

    $title = "Auto Post on Facebook Using PHP SDK v5";

    $targetUrl = "https://www.nazwa.pl";

    $imgUrl = "https://www.nazwa.pl/images/logo.png";

    $description= "opis, opis, opis, opis, opis, opis, opis, opis, opis, opis, opis, opis, opis, opis, opis, opis, opis, opis, opis, opis, opis, opis, opis, ";

    

    $params["message"] = $title;

    $params["link"] = $targetUrl;

    $params["picture"] = $imgUrl;

    $params["description"] = $description;

     

    // get access token from the database or you can directly put here

    $access_token = baza_odczyt($wartt['facebook_token']);

     

    // post to Facebook

    try {

      // Returns a `Facebook\FacebookResponse` object

      $response = $fb->post('/me/feed', $params, $access_token);

    } 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'];

    

    }

 

 

Skrypt działa super, bez problemu publikuje posty na PRYWATNYM profilu Facebooka.
Chciałbym jednak żeby posty były publikowane na profilu FIRMOWYM.

Jak to zrobić?
Wydaje mi się iż zapisuję w 1 skrypcie token użytkownika prywatnego, nie firmowego - i dlatego posty idą na profil prywatny?

Wiecie może jak naprawić ten problem?

Bardzo proszę o pomoc.
Northwest
ps. nie mam za dużo uprawnień w tej aplikacji?