Facebook PHP API登录窗口弹出

9
我正在使用最新版本的Facebook PHP API SDK。我想让登录按钮激活弹出窗口而不是打开整个页面。我尝试使用这个教程:http://thinkdiff.net/facebook/create-facebook-popup-authentication-window-using-php-and-javascript/
弹出窗口可以工作,但是当我登录时,弹出窗口没有关闭,网站只是在弹出窗口中打开。
有人知道我需要做什么才能在登录后关闭弹出窗口吗?
这是生成登录URL的PHP代码:
<?php
    $loginUrl = $me_on_facebook->getLoginUrl(array(
        'display' => 'popup',
        'next' => $config['baseurl'],
        'redirect_uri' => $config['baseurl'],
        'scope' => 'email'
    ));
?>
2个回答

16

弹出式登录框加载并且用户登录/连接时,该框会在URL后面附加?code=XXX并加载网站。因此,我添加了一个PHP if语句来处理该站点。

<?php
    if (isset($_REQUEST['state']) && isset($_REQUEST['code'])) {
        echo "<script>
            window.close();
    window.opener.location.reload();
        </script>";
} else {
        // load page
    }
?>

这段代码的作用是关闭弹出窗口并重新加载打开弹出窗口的原始页面。


2

我的整个网站都基于Facebook的PHP SDK建立。通过JavaScript SDK初始化登录会影响这一点吗? - Todd Low
1
当您使用Javascript SDK时,您需要使用cookie:true参数进行init()。因此,Javascript SDK会将令牌保存在cookie中,然后您的PHP SDK将使用该cookie进行工作。在此处描述了Init() http://developers.facebook.com/docs/reference/javascript/ - 因此,Javascript和PHP SDK都可以在同一站点上工作,并且它们将使用cookie共享相同的会话。 - Elena Sharovar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接