Reputation: 1030
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
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