1

我遇到了几个问题,想知道是否有人有任何见解。我正在使用最新的 php-sdk 我正在开发一个具有许多不同步骤的画布应用程序。这些步骤分布在多个页面上。现在,当我第一次进入应用程序时,一切似乎都运行良好。访问令牌在那里,我可以调用 api 函数。在第二页(链接到同一个 iframe)上,我收到 OAuth 错误。现在,如果我在第二页上使用它:

 $me = $facebook->getUser();
 var_dump($me);

它返回正确的用户 id,但在尝试使用 api 查询时我仍然遇到错误(在这种情况下特别是 FQL 查询)

现在,请记住这些链接在 iframe 内,所以我假设signed_request 在某个地方丢失了,我知道 facebook 通常通过 POST 发布这个。如果我使用诸如http://apps.facebook.com/myapp/page2.php之类的 URL 将所有链接设置为 target="_parent",那么一切正常。Facebook这次清楚地发布了正确的信息。随后,当我使用仅重定向 iframe 的链接时,它似乎又可以正常工作了(暗示在某处设置了 cookie)。

现在我已经看到其他没有 target="_parent" 的应用程序似乎可以正常工作,只在后续点击时加载 iframe 而不是完整的 facebook 网站。所以我只能假设他们将这些信息存储在某个地方。我尝试使用 httpfox 检查这些应用程序,但看不到任何明显的东西。有没有人有关于多页面应用程序最佳实践的链接?我知道我可以使用完整的 url 和 target="_blank" 来解决这个问题,但我想知道这里发生了什么。我浏览了开发人员文档和画布页面示例,但对我来说没有什么明显的。

任何帮助或信息将不胜感激

非常感谢

4

1 回答 1

0

有一些方法可以实现这一点

  • 使用 Facebook JavaScript SDK(它会为你设置 cookie,所以 PHP-SDK 可以依赖它)
  • 向您的页面发出 POST 请求,包括signed_request从画布中加载的初始页面
于 2011-12-30T19:29:22.173 回答