【问题标题】:Correct way to link to new page in canvas page app php-sdk在画布页面应用程序 php-sdk 中链接到新页面的正确方法
【发布时间】:2011-12-31 03:29:22
【问题描述】:

我遇到了几个问题,想知道是否有人有任何见解。我正在使用最新的 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" 来解决这个问题,但我想知道这里发生了什么。我浏览了开发人员文档和画布页面示例,但对我来说没有什么明显的。

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

非常感谢

【问题讨论】:

    标签: facebook-php-sdk access-token facebook-canvas


    【解决方案1】:

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

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

    【讨论】:

    • 您好,感谢您的回复。我在页面上有 javascript SDK,脚本肯定正在加载。奇怪的是,我在使用 facebook 登录的网站上使用了完全相同的设置,并且效果很好。我尝试设置一个值为 $_REQUEST['signed_request'] 的 cookie,但即使在后续页面上似乎也无法访问
    • 我已经接受了这在技术上是正确的,但是对于它的价值,我错过了一个报价,因此它是有效的。奇怪的是 firebug 等正在显示 js 加载,但显然它没有执行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    相关资源
    最近更新 更多