3

我们正在托管一个 PHP facebook 画布应用程序 ( http://apps.facebook.com/myapp)。其中一个页面 ( http://apps.facebook.com/myapp/foobar) 需要来自 facebook 的身份验证,因此我们可以访问有关用户的一些信息。这是通过使用 PHP-SDK 的$facebook->getLoginUrl()方法来生成用于身份验证的 url 并按预期工作来实现的。

此后,我们将该应用程序作为选项卡 (iFrame) 添加到我们的页面 ( http://www.facebook.com/MyPage?sk=app_nnnnn)。现在,当我们尝试对用户进行身份验证时,他们将被重定向到应用程序的 url ( http://apps.facebook.com/myapp/foobar),而不是/foobar按预期将页面加载到 Tab 的 iFrame 中。

是否可以设置身份验证,使其不会反弹到应用程序的 url,但使用 PHP-SDK 保留在选项卡内?如果是这样,我应该遵循什么工作流程来实现这一目标?

4

2 回答 2

1

我只需添加代码以http://apps.facebook.com/myapp/foobar检查身份验证,如果是,则回显:

<script type="text/javascript">
    top.location.href = 'http://www.facebook.com/MyPage?sk=whatever';
</script>

那应该突破 iframe 并将您重定向到您想去的地方。

于 2011-06-08T15:56:49.273 回答
0

我实现这一目标的方法是执行以下操作:

  • /myapp/foobar页面上,我检查用户是否已通过身份验证。如果他们还没有设置会话值并使用 PHP-SDK$facebook->getLoginUrl()生成 auth url 并发送回仅包含要重定向的 javascript 的响应window.top
  • 一旦他们通过身份验证,他们就会被重定向回主页。当此页面加载时,它会检查会话值,如果设置,则将其删除并发出重定向标头到/myapp/foobar.

这有点令人费解,但似乎是一个相当稳定的解决方案。

于 2011-06-09T13:29:27.750 回答