Facebook iframe选项卡签名请求始终为空

时间:2011-03-09 23:53:30

标签: facebook facebook-authentication facebook-canvas

我正在开发Facebook应用程序标签,并希望使用已签名的请求包,如下所示: http://developers.facebook.com/blog/post/462/

我正在尝试使用their example code来解包已经传递给标签页的已签名请求,但$_POST$_GET$_REQUEST始终是空。

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

他们最近的公告中是否有遗漏的东西?

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

-Seth

5 个答案:

答案 0 :(得分:40)

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

显然,Facebook并不喜欢这样。将“标签网址”更改为“标签/ index.php”后,已签名的请求开始显示在应用标签页中!

答案 1 :(得分: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中构建的,因此没有文件名,但显然需要尾随斜杠)。

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

非常令人沮丧;我只花了一个半小时调试为什么我的测试应用程序工作而生产者没有。更糟糕的是,我知道这个答案,它只是没有记录这就是问题所在。很烦人!

答案 2 :(得分:4)

谢谢Seth我遇到了同样的问题。我可以在应用程序画布页面上获得已签名的请求,但不能获取我的页面选项卡。澄清

  1. 访问www.facebook.com/developers /
  2. 点击您应用的修改设置
  3. 点击Facebook集成标签
  4. 位于选项卡URL字段的页面选项卡部分的底部,输入facebook登录页面的index.php页面的路径
  5. 离。如果您的页面位于www.foobar.com/facebook/tab/index.php,则需要输入“tab / index.php”(不带引号)而不仅仅是“tab /”

    几天来一直试图解决这个问题!

答案 3 :(得分:4)

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

它对我有用,请告诉我们它是否也适合你!

答案 4 :(得分:0)

使用Application进行身份验证后,您将获得signed_request数据, 在以下网址中进行了身份验证