在对应用进行身份验证后,是否有正确的方法重定向到Facebook标签?

时间:2011-06-08 13:22:57

标签: facebook facebook-php-sdk

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

我们已将应用程序添加到我们的页面(http://www.facebook.com/MyPage?sk=app_nnnnn)作为Tab(iFrame)。现在,当我们尝试对用户进行身份验证时,会将其重定向到应用的网址(http://apps.facebook.com/myapp/foobar),而不是按预期在标签的iFrame中加载/foobar页面。

是否可以设置auth以使其不会反弹到应用程序的URL但使用PHP-SDK保留在Tab中?如果是这样,我应该遵循的工作流程是什么?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

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