检查是否在facebook canvas php sdk 5中

时间:2016-05-10 23:43:35

标签: php facebook facebook-php-sdk facebook-canvas

用php sdk 5可以这样做吗? 我的页面在canvas中运行,我有这段代码:

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

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

它总是返回无符号数组{0}数组{0},即没有签名信息,没有$ POST信息。我想要牢固地检测我是否在facebook画布内,并且我搜索了很多内容,似乎必须始终发布signed_request。我错了吗?

2 个答案:

答案 0 :(得分:0)

我不知道为什么,但在facebook画布设置中我不得不添加' www'在网址之前;这使得POST请求正确。可能与reserver重定向配置有关,但这不属于我的专业领域,无法正确地进行重新定位。

答案 1 :(得分:0)

今天这是检查此问题的最佳方式:

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