I have defined an access token and have the required permissions to 'like' a facebook page, but firebug keeps giving me the error in the title. Please don't mark this post as duplicate, because I've looked on the posts regarding the problem and I couldn't find an answer that would fit my particular case in any way. I can't understand why or how should I solve it. My code is the following:
utils.php
<?php
require_once('sdk/src/facebook.php');
require_once("AppInfo.php");
/**
* @return the value at $index in $array or $default if $index is not set.
*/
function idx(array $array, $key, $default = null) {
return array_key_exists($key, $array) ? $array[$key] : $default;
}
function he($str) {
return htmlentities($str, ENT_QUOTES, "UTF-8");
}
$facebook = new Facebook(array(
'appId' => AppInfo::appID(),
'secret' => AppInfo::appSecret(),
'sharedSession' => true,
'trustForwarded' => true,
'file_upload' =>true
));
$user_id = $facebook->getUser();
if($user_id)
{
$logoutUrl =$facebook->getLogoutUrl();
}
else
{
$loginUrl=$facebook->getLoginUrl();
}
if ($user_id) {
try {
// Fetch the viewer's basic information
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
// If the call fails we check if we still have a user. The user will be
// cleared if the error is because of an invalid accesstoken
if (!$facebook->getUser()) {
header('Location: '. AppInfo::getUrl($_SERVER['REQUEST_URI']));
exit();
}
}
}
?>
likes.php
<?php
require_once("sdk/src/facebook.php");
require_once("utils.php");
require_once("AppInfo.php");
$permissions = $facebook->api('/me/permissions ');
if( array_key_exists('publish_actions', $permissions['data'][0]) ) {
// Permission is granted!
// Do the related task
//$post_id = $facebook->api('/me/feed', 'post', array('message'=>'Hello World!'));
} else {
// We don't have the permission
// Alert the user or ask for the permission!
header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_actions")) );
}
?>
<!DOCTYPE html>
<html xmlns:fb="http://ogp.me/ns/fb#">
<head>
<style type="text/css">
li{
vertical-align: middle;
padding-top: 1em;
}
</style>
<div id="fb-root"></div>
<script type="text/javascript" src="/javascript/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
(function(d, debug){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all" + (debug ? "/debug" : "") + ".js";
ref.parentNode.insertBefore(js, ref);
}(document, false)); //loads javascript-sdk
$(function() {
// Set up so we handle click on the buttons
$('#like_but').click(function(){
FB.api(
'me/og.likes',
'post',
{
object: "http://facebook.com/216730015024772"
},
function(response) {
alert(response);
});});}); // they are closed properly, don't bother checking it. (!) Should like the 'object'
</script>
</head>
<body>
<div style="position:fixed; display:block">
<input type="button" value="Like" id="like_but"/>
</div>
</body>
</html>
Does anyone have any idea why does the error appear or how can I solve this? Any hint would be appreciated.
Note: the user logs in from another index.php, but I won't post it here, because there is no problem with it, and the access token is still gathered in utils.php. Also when checking if permissions are granted in "likes.php", it works fine.