Check if inside facebook canvas php sdk 5

46 Views Asked by At

Is it possible to do so with php sdk 5? My page runs inside canvas, and I have this code:

$helper = $facebook->getCanvasHelper();
$signedRequest = $helper->getSignedRequest();

if ($signedRequest) 
{
echo 'sidned'.$signedRequest;
die();
}
else
{
echo 'unsigned'.$signedRequest;
var_dump ($_POST);
var_dump ($_GET);
die();
}

It always returns unsigned array{0} array{0} i.e. no signed info, no $POST info. I want to detect solidly if I am inside facebook canvas, and I googled a lot and seems like signed_request has to be posted all the time. Am I wrong on this one?

2

There are 2 best solutions below

0
user2426290 On

I have no idea why, but inside facebook canvas settings I had to add 'www' before the url; This made POST request properly. Probably has something to do with reserver redirects configuration, but that is out of my area of expertice to digg into it properly.

0
pollux1er On

Today this is the best way to check this :

$fb = new Facebook\Facebook([
  'app_id' => 'app-id',
  'app_secret' => 'app-secret',
  'default_graph_version' => 'v2.12',
]);

$helper = $fb->getPageTabHelper();

// Obtain a signed request entity from a page tab
$helper = $fb->getPageTabHelper();
$signedRequest = $helper->getSignedRequest();
$payload = $signedRequest->getPayload();

if($payload['page']) {
    // I am under a page
} else {
    // I am inside facebook canvas
}