2011-03-09 47 views
17

我正在一个Facebook应用程序选项卡上,并想用签名的请求束作为记录在这里: http://developers.facebook.com/blog/post/462/Facebook的IFRAME标签签名的请求总是空

我试图用their example code解包的签名的请求这应该是传递给标签,但是,$_POST,$_GET$_REQUEST总是全部为空。

确切的代码在画布页上工作,我能够解析签名的请求。

在最近的公告中是否有某些我错过的东西?

顺便说一句,该应用程序没有发布到市场上,我的选项卡上安装的粉丝页是私人的。这会有所作为吗?

-Seth

回答

40

好吧,想通了! 当配置应用程序时,我填写了“标签网址”为“标签/” 这使得标签页的完整url“http://www.example.com/myfacebookapp/tab/” 这对我来说很有意义。

显然,Facebook不喜欢这样。将我的“标签网址”更改为“tab/index.php”后,签名的请求开始显示在应用程序选项卡中!

+0

岩石上的身份验证为等。这刚刚帮助了我。 – ceejayoz 2012-08-22 17:34:26

+0

这给我修好了。谢谢! – 2012-12-17 20:24:21

+0

你是对的,但偏袒。这不是Facebook的问题。 Facebook将签名的请求发送到您在开发人员区域指定的URL。 在我的情况下,我插入'mydomain.com/tab /'作为标签URL,但是会发生什么是我选择的框架将'mydomain.com/tab /'重定向到'mydomain.com/tab'(注意没有结尾斜杠)。这是GET重定向(简单地说),因此签名的请求丢失。在您的情况下,您将从非结尾的斜杠URL重定向到带有导致签名请求丢失的尾部斜杠的URL。 – Andreyco 2014-02-15 18:33:22

4

谢谢Seth我遇到了同样的问题。画布页,但不是我的网页标签。为了澄清

  1. 转到www.facebook.com/developers/
  2. 点击编辑设置你的应用程序
  3. 点击Facebook的集成选项卡
  4. 在在“标签网址”字段中的“页面标签”部分底部输入index.php页面的路径e为您的Facebook登陆页面

ex。如果你的页面位于www.foobar.com/facebook/tab/index.php你需要把“tab/index.php”(不带引号)而不是“tab /”

一直试图这几天!

4

我找到了一个解决方案: 只需在标签网址的末尾加上“/”即可。 赞:“http://domain.us/facebook/tab/”

它为我工作,让我们知道它是否也适用于你!

+0

它是如此愚蠢的Facebook没有警告,感谢您的技巧,节省了大量的时间。 – destan 2012-04-27 11:25:16

8

本质上,问题在于您的网络服务器在接收到请求时正在执行重定向。在你的情况下,它将从http://www.example.com/myfacebookapp/tab/重定向到http://www.example.com/myfacebookapp/tab/index.php;在我的情况下,它是从http://www.example.com/myfacebookapp/tab重定向到http://www.example.com/myfacebookapp/tab/(我的应用程序内置.Net MVC,所以没有文件名,但需要显然跟踪斜线)。

因此,规范的解决方案是确保选项卡网址字段中的路径是实际的网址,而不是网络服务器将重定向到的网址。如果Web服务器必须重定向,那么通过GET(而不是POST)获取实际页面,并且不会向您的脚本提供postdata。

非常令人沮丧;我只花了一个半小时的时间来调试为什么我的测试应用程序工作,而生产一个没有。更糟糕的是,我知道这个答案,它只是没有注意到这是问题所在。非常刺激!

+0

很遗憾,Canvas应用程序无法完成此操作,因为它们必须以'/'结尾 – 2013-01-11 21:00:10

+0

这肯定不是这种情况;我最近没有查过,但我认为你可能在那里弄​​错了。 – 2013-01-14 10:08:56