检查是否在facebookcanvas php-sdk 5内部


Check if inside facebook canvas php sdk 5

使用php-sdk 5可以做到这一点吗?我的页面在画布内运行,我有这样的代码:

$helper = $facebook->getCanvasHelper();
$signedRequest = $helper->getSignedRequest();
if ($signedRequest) 
{
echo 'sidned'.$signedRequest;
die();
}
else
{
echo 'unsigned'.$signedRequest;
var_dump ($_POST);
var_dump ($_GET);
die();
}

它总是返回无符号数组{0}数组{1},即没有签名信息,没有$POST信息。我想确切地检测我是否在facebook画布内,我在谷歌上搜索了很多,似乎签名请求必须一直发布。我错了吗?

我不知道为什么,但在facebook画布设置中,我不得不在url之前添加"www";这使得POST请求正确。可能与reserver重定向配置有关,但这超出了我的专业范围。

今天,这是检查这一点的最佳方法:

$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
}