gazzwi86
gazzwi86

Reputation: 1030

Facebook PHP SDK: Post object / action

I was wondering if anyone could help me.

I'm trying to use the PHP SDK to post actions, but it doesn't seem to return an object after the request is made, nor does it update the activity section of the users profile with the action. I had this working fine in JS but can't seem to move it to php.

// include the FB SDK
require_once(APPLICATION_PATH . '/../library/facebook/facebook.php');

// create the application instance
$facebook = new Facebook(array(
    'appId'  => $this->facebookConfig->appid,
    'secret' => $this->facebookConfig->appsecret,
    'cookie' => true
));

// get the user id
$user = $facebook->getUser();
if(!empty($user)) {
    // We have a user ID, so probably a logged in user.
    // If not, we'll get an exception, which we handle below.
    try {

        // post og actions
        if(!empty($this->thanksData->ogobject) && !empty($this->thanksData->ogaction)){

            $method = '/me/' . $this->appData->namespace . ':' . $this->thanksData->ogaction;
            $params = array(
                        $this->thanksData->ogobject => 'http://mydomain.com/thanks', 
                        //'access_token' => $this->fbAuthToken
                    );

            $ret_obj = $facebook->api($method, 'POST', $params);

        }

        // wall post
        if(!empty($this->facebookConfig->wallmsg))
            $this->wallPost($facebook);

    } catch(FacebookApiException $e) {
        // If the user is logged out, you can have a 
        // user ID even though the access token is invalid.
        // In this case, we'll get an exception, so we'll
        // just ask the user to login again here.
        $params = array(
            'scope'         => $this->permissions,
            'redirect_uri'  => $this->facebookConfig->applink
        );
        $loginUrl = $facebook->getLoginUrl($params);

        // log errors
        error_log($e->getType());
        error_log($e->getMessage());

        // redirect if not logged in or not enough permissions
        //echo "<script>top.location=\"".$loginUrl."\";</script>";die;
    }

    // Give the user a logout link 
    //echo '<br /><a href="' . $facebook->getLogoutUrl() . '">logout</a>';
}

Example of the same in JS This code was working before I removed it in favour of doing the task in PHP

// initialise facebook
window.fbAsyncInit = function() {

    // get the data
    var data = $('body').data();

    FB.init({
        appId   : data.appid, // App ID
        status  : true, // check login status
        cookie  : true, // enable cookies to allow the server to access the session
        xfbml   : true, // parse XFBML
        oauth   : true  // oauth stuff
    });

    // enable actions on page visit
    if(data.object.length > 0 && data.action.length > 0){

        // check if we have permissions
        FB.login(function(loginResponse){

            FB.api('me/permissions','get',function(response){

                // get the data
                var data = $('body').data();

                if(data.ogactions == 1){
                    var params = {};
                    params[data.object] = data.url;

                    // post that we read the article
                    FB.api(
                        '/me/'+ data.appnamespace + ':' + data.action,
                        'post',
                        params,
                        function(response) {
                            if (!response || response.error) {
                                console.log(response);
                            } else {
                                console.log('Action successful! Action ID: ' + response.id);
                            }
                    });

                }

            });

        }, {scope: 'publish_actions,publish_stream'});

    }
}

Upvotes: 0

Views: 1670

Answers (1)

gazzwi86
gazzwi86

Reputation: 1030

It was a rather stupid error, my og meta fields in the head had name="" rather than property="", something I hadn't noticed.

Upvotes: 1

Related Questions