我们正在托管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中?如果是这样,我应该遵循的工作流程是什么?
答案 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
发出重定向标题。这有点令人费解,但似乎是一个非常稳定的解决方案。