Brajman
Brajman

Reputation: 307

PHP auto post on facebook page

I am trying to auto post on Facebook page using my app it works fine if I replace my-page-numeric-id with my profile numeric id, but when I put my page numeric id instead of my-page-numeric-id and put valid access token it won't publish on Facebook page I tried to submit review permission that are as follow "manage_pages, publish_actions" but Facebook team mentioned that you don't need it all because you own this page and your currently admin of it, these permission are necessary when any other person need to authorize with your app. Now my question is, my code works perfectly for publishing post on my profile's wall but i am unable to auto post on my page what is the problem behind it i am unable to figure out here is my code

<?php
 require_once 'src/facebook.php';
class FacebookApi {

    var $consumer;
    var $token;
    var $method;
    var $http_status;
    var $last_api_call;
    var $callback;
    var $connection;
    var $access_token;

    function __construct($data){
        $config = array();
        $config['appId'] = $data['consumer_key'];
        $config['secret'] = $data['consumer_secret'];

        $this->connection = new Facebook($config);

    }

    function share($title, $targetUrl, $imgUrl, $description, $access_token){

        $this->connection->setAccessToken($access_token);

        $params["access_token"] = $access_token;
        if(!empty($title)){
            $params["message"] = $title;
            $params["name"] = $title;
        }
        if(!empty($targetUrl)){
            $params["link"] = $targetUrl;
        }
        if(!empty($imgUrl)){
            $params["picture"] = $imgUrl;
        }
        if(!empty($description)){
            $params["description"] = $description;
        }

        // post to Facebook
        try {
          $ret = $this->connection->api('/my-page-numeric-id/feed', 'POST', $params);
        } catch(Exception $e) {
          $e->getMessage();
        }

        return true;
    }

    function getLoginUrl($params){
        return $this->connection->getLoginUrl($params);
    }

    function getContent($url) {
        $ci = curl_init();
        /* Curl settings */
        curl_setopt($ci, CURLOPT_URL, $url);
        curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ci, CURLOPT_HEADER, false);
        curl_setopt( $ci, CURLOPT_CONNECTTIMEOUT, 10 );

        curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, false);

        $response = curl_exec($ci);
        curl_close ($ci);
        return $response;
      }
}

$access_token = 'long-live-token-here';
$facebookData = array();
$facebookData['consumer_key'] = 'app-id-here';
$facebookData['consumer_secret'] = 'app-secret-here';

$title = "Demo Content Posted on Timeline";
$targetUrl = "http://www.demo_url.com/1234-post";
$imgUrl = "http://www.demo_url.com/1234-post-image.png";
$description = "demo_description_here"; 

$facebook = new FacebookApi($facebookData);
$facebook->share($title, $targetUrl, $imgUrl, $description, $access_token);

?>

Upvotes: 2

Views: 11978

Answers (2)

Gowtham Sooryaraj
Gowtham Sooryaraj

Reputation: 3917

now it's time for facebook v5 sdk

$fb = new Facebook\Facebook([
  'app_id' => 'app_id',
  'app_secret' => 'app_secret',
  'default_graph_version' => 'v2.8',
  ]);
             // facebook auto post

$params = array(
  "message" => "$title in $merchant   $short",
  "link" => "http://pickmyoffers.com/",
  "picture" => "http://Pickmyoffers.com/images/searched/Flipkart.png",
  "name" => "www.Pickmyoffers.com",
  "caption" => "www.pickmyoffers.com",
  "description" => "Submit Coupon and earn money through Pickmyoffers.com | Deals,Coupons and offers."
);
            $post = $fb->post('/Page_id/feed',$params, $access_token);
            $post = $post->getGraphNode()->asArray();

}

hope it's help

Upvotes: 2

C3roe
C3roe

Reputation: 96454

With API v2.3, they have split the publishing permission into two separate ones:

  • publish_actions is for anything you want to publish as a user

  • if you want to publish as a page however, you need publish_pages permission (in addition to manage_pages)

Upvotes: 4

Related Questions