2011-06-08 35 views
3

我们正在举办一个PHP的facebook画布应用程序(http://apps.facebook.com/myapp)。其中一页(http://apps.facebook.com/myapp/foobar)要求从Facebook进行身份验证,以便我们可以访问有关用户的一些信息。这是通过使用PHP-SDK的$facebook->getLoginUrl()方法来生成身份验证的URL并按预期工作。在应用程序的身份验证之后重定向到Facebook选项卡的正确方法?

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

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

回答

1

我只想补充代码http://apps.facebook.com/myapp/foobar检查验证,如果是,回声:

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

这应该脱离iframe的和重定向您可以在您想去的地方。

0

我已经实现了这个问题的方法是做到以下几点:

  • /myapp/foobar页我检查,查看用户是否已经通过认证。如果他们没有设置会话值并使用PHP-SDK的$facebook->getLoginUrl()生成身份验证URL并发送回应,只包含javascript以重定向window.top
  • 验证完成后,它们会重定向回主页面。加载此页面时,会检查会话值,如果已设置,则将其删除并向/myapp/foobar发出重定向标头。

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

相关问题