【问题标题】:Facebook iframe tab signed request always emptyFacebook iframe 选项卡签名请求始终为空
【发布时间】:2011-03-09 23:53:29
【问题描述】:

我正在使用 Facebook 应用程序选项卡,并希望使用此处记录的签名请求包: http://developers.facebook.com/blog/post/462/

我正在尝试使用 their example code 来解包应该传递给选项卡的签名请求,但是,$_POST$_GET$_REQUEST 始终都是空的。

确切的代码适用于画布页面,我能够解析签名的请求。

我在他们最近的公告中遗漏了什么?

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

-赛斯

【问题讨论】:

    标签: facebook facebook-authentication facebook-canvas


    【解决方案1】:

    好的,明白了! 在配置应用程序时,我已将“Tab URL”填写为“tab/” 这使得标签页“http://www.example.com/myfacebookapp/tab/”的完整网址 这对我来说很有意义。

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

    【讨论】:

    • 摇滚吧。这对我有帮助。
    • 这为我解决了问题。谢谢!
    • 你是对的,但偏颇。这不是 Facebook 的问题。 Facebook 将签名请求发送到您在开发人员区域中指定的 URL。在我的例子中,我插入了 mydomain.com/tab/ 作为标签 URL,但是我选择的框架将 mydomain.com/tab/ 重定向到 mydomain.com/tab(注意没有尾部斜杠)。这是 GET 重定向(简单地说),所以签名的请求丢失了。在您的情况下,您会从非斜杠 URL 重定向到带有斜杠的 URL,这会导致签名请求丢失。
    【解决方案2】:

    本质上,问题在于您的网络服务器在收到请求时正在执行重定向。在您的情况下,它从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,而不是网络服务器将重定向到的 URL。如果网络服务器必须进行重定向,则通过 GET(而不是 POST)获取真实页面,并且不会向您的脚本提供 signed_request postdata。

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

    【讨论】:

    • 很遗憾,Canvas 应用无法做到这一点,因为它们必须以 '/' 结尾
    • 过去肯定不是这样;我最近没有检查过,但我认为你可能弄错了。
    【解决方案3】:

    谢谢赛斯,我遇到了同样的问题。我可以在应用画布页面上获得签名请求,但在我的页面选项卡上却没有。澄清一下

    1. 访问 www.facebook.com/developers/
    2. 点击应用的编辑设置
    3. 点击 Facebook 集成标签
    4. 在“页面标签”部分底部的“标签 URL”字段中,输入您的 facebook 登录页面的 index.php 页面的路径

    例如。如果您的页面位于 www.foobar.com/facebook/tab/index.php 您需要输入“tab/index.php”(不带引号)而不仅仅是“tab/”

    这几天一直在想办法解决这个问题!

    【讨论】:

      【解决方案4】:

      我找到了解决方案: 只需在选项卡网址的末尾添加一个“/”即可。 喜欢:“http://domain.us/facebook/tab/”

      它对我有用,如果它也对你有用,请告诉我们!

      【讨论】:

      • 太笨了,facebook 没有对此发出警告,感谢您的提示,它节省了很多时间。
      【解决方案5】:

      一旦您通过应用程序进行身份验证,您将获得 signed_request 数据, 在以下 URL 中进行了身份验证

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-01
        • 1970-01-01
        • 2021-02-01
        • 1970-01-01
        • 2015-12-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多