Facebook getSignedRequest并不总是抓取页面ID

时间:2011-11-29 14:31:30

标签: php facebook facebook-graph-api facebook-php-sdk

我正在开发一个我想用作页面标签的Facebook应用程序。我们的想法是,它会根据使用标签的Facebook页面显示不同的内容。

<?php require_once ("php-sdk/facebook.php");
$config = array();
$config['appId'] = 'xxxxx';
$config['secret'] = 'xxxxx';
$facebook = new Facebook($config);
$signed_request = $facebook->getSignedRequest();
$page_id = $signed_request["page"]["id"]; ?>

不幸的是,它只是偶尔有效。现在,我只是试图回应$ page_id,它并不总是有效。有时它会正确地回显$ page_id,有时它会回显一个空值。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

我终于弄明白了。我的代码没有任何问题。问题出在服务器上。它被设置为将所有http流量更改为https流量。因此,该标签为设置Facebook以使用https的个人提取了page_id。如果有人使用http查看facebook,则无法拉入page_id。

现在全部修好了。服务器允许http流量保持http和https流量以保持https。

答案 1 :(得分:1)

我在heroku的facebook标签应用程序上遇到了同样的问题,问题出在示例代码index.php

if (substr(AppInfo::getUrl(), 0, 8) != 'https://' && $_SERVER['REMOTE_ADDR'] != '127.0.0.1') {

header('Location:https://'。$ _SERVER ['HTTP_HOST']。$ _SERVER ['REQUEST_URI']);   出口();

重定向使页面信息数组变为desapear。没有这一切,一切正常:)

答案 2 :(得分:0)

我有同样的问题,在网上冲浪几小时后我发现问题出在我的应用程序密码ID

我希望这有帮助