我在粉丝页面上的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设置。
答案 0 :(得分:12)
好的,我自己就遇到了这个问题并找到了问题。
确保您在画布或标签页上没有301重定向。在我的情况下,我将应用程序设置为“mydomain.com/facebook/tab/”,但我的网站正在执行301到“ www .mydomain.com / facebook / tab /”
内容会显示,位301导致signedRequest为null。
在应用设置中为我的域添加了“www”,现在signedRequest包含我要查找的数据。
答案 1 :(得分:6)
我刚遇到这个问题。终于想通了。我必须在基本选项卡上的应用程序设置中的选项卡URL末尾添加正斜杠。
答案 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']丢失了