无法使用iframe选项卡访问Facebook signed_request

时间:2011-05-03 19:02:39

标签: php facebook facebook-php-sdk

我在粉丝页面上的facebook标签中加载了iframe,我没有运气访问$ _REQUEST [“signed_request”]对象。我很困惑,因为这应该是一个免费的,易于访问。我已经阅读并重新阅读了facebook文档并重新检查了我的facebook应用程序设置,但没有任何工作。

isset($_REQUEST['signed_request']

总是假的。由于我正在使用Facebook PHP sdk,我也尝试了

$facebook->getSignedRequest();

我在$ _REQUEST上完成了print_r,但是我没有在那里看到signed_request。当我print_f $ facebook对象时,我看到signedRequest是空的

[appId:protected] => XXX
[apiSecret:protected] => XXXXXXXXXXXXXXXXXXXX
[session:protected] => Array

        [access_token] => XXXXXXXXXX|2.h75WqKxcA1xbNPufFvpKQQ__.3600.1304452800.1-726960374|JiO0ZS30SyLaApeqhMtdocK8B_Y
        [base_domain] => XXXXXXXXX
        [expires] => 1304452800
        [secret] => rDF9C_z43_EUFy0Q_e6tyQ__
        [session_key] => 2.h75WqKxcA1xbNPufFvpKQQ__.3600.1304452800.1-726960374
        [sig] => 1971ef7eb8057c7404eae1f82d770ab5
        [uid] => XXXXXXXXXXXXXXX


[signedRequest:protected] => 
[sessionLoaded:protected] => 1
[cookieSupport:protected] => 1
[baseDomain:protected] => 
[fileUploadSupport:protected] => 

[编辑] 我确实为应用程序启用了OAuth 2.0设置。

6 个答案:

答案 0 :(得分:12)

好的,我自己就遇到了这个问题并找到了问题。

确保您在画布或标签页上没有301重定向。在我的情况下,我将应用程序设置为“mydomain.com/facebook/tab/”,但我的网站正在执行301到“ www .mydomain.com / facebook / tab /”

内容会显示,位301导致signedRequest为null。

在应用设置中为我的域添加了“www”,现在signedRequest包含我要查找的数据。

答案 1 :(得分:6)

我刚遇到这个问题。终于想通了。我必须在基本选项卡上的应用程序设置中的选项卡URL末尾添加正斜杠。

而不是: http://domain.com/facebook

我需要: http://domain.com/facebook/

答案 2 :(得分:2)

我有同样的问题我解决了。 这是URLS的问题。一定要你的 App Domain&页面选项卡URL匹配相同的域,例如:

1)App域:example.com    页面标签网址:example.com    会工作

2)App域:example.com    页面标签网址:example.com/app/    会工作

3)应用域名:fb.example.com    页面标签网址:fb.example.com/app/    会工作

4)应用域名:fb.example.com    页面标签网址:example.com/fb    将无法正常工作

答案 3 :(得分:1)

经过一番调查后,我怀疑这与托管iframe源的位置有关。

当我将所有内容移动到localhost时,signed_request开始正常运行。

答案 4 :(得分:0)

编辑标签应用程序的设置。 在“高级”标签上,确保已启用“OAuth 2.0 for Canvas”。

答案 5 :(得分:0)

这是一个老问题,但我发现谷歌... 对我来说问题是我手动重定向到我的pagetab的https网址而不是$ _POST ['signed_request']丢失了