我正在尝试在 iframe 应用程序中请求某些权限时向 facebook 验证(登录)用户。
我将 JS SDK 与 PHP SDK 结合使用。因此,首先我检查用户是否已登录并且使用 PHP 一切正常$facebook->getUser()
,当失败时,我将用户重定向到运行此 JS 的页面:
FB.getLoginStatus(function(response) {
if (response.status === "connected") {
// Ok, go home
} else {
FB.login(function(response) {
if (response.authResponse) {
// Ok, go home
} else {
// Cancelled, go home
}
}, {scope: '<?php echo implode(',', $this->permissions); ?>'});
}
});
然后,这将创建一个请求权限的登录对话框。如您所见,在某些情况下,用户已正确进行身份验证/授权以及对话框何时被取消。在任何一种情况下,我都需要做一件事:重定向回我的应用程序的根目录。
因此,对话框弹出,用户登录,然后他被重定向回我使用 PHP 到getUser()
.
这里的问题是,用户第一次登录并重定向时,getUser()
总是为空,没有用户会话。如果我刷新包含我的应用程序 iframe 的 facebook 页面,则存在会话并且权限设置正确,表明对话框已完成它的工作。
关于为什么第一个重定向不起作用的任何想法?
我发现了类似的问题,但没有给我一个具体的、有效的解决方案。