Facebook PHP API登录窗口弹出窗口

Facebook PHP API登录窗口弹出窗口,php,facebook,api,login,sdk,Php,Facebook,Api,Login,Sdk,我使用的是facebook最新版本的php api sdk。我试图让登录按钮激活一个弹出窗口,而不是打开整个页面。我尝试使用本教程: 弹出窗口工作,但当我登录时,弹出窗口没有关闭,网站只是在弹出窗口中打开 有人知道我登录后要关闭弹出窗口需要做什么吗 以下是生成登录url的php代码: <?php $loginUrl = $me_on_facebook->getLoginUrl(array( 'display' => 'popup', 'n

我使用的是facebook最新版本的php api sdk。我试图让登录按钮激活一个弹出窗口,而不是打开整个页面。我尝试使用本教程:

弹出窗口工作,但当我登录时,弹出窗口没有关闭,网站只是在弹出窗口中打开

有人知道我登录后要关闭弹出窗口需要做什么吗

以下是生成登录url的php代码:

<?php
    $loginUrl = $me_on_facebook->getLoginUrl(array(
        'display' => 'popup',
        'next' => $config['baseurl'],
        'redirect_uri' => $config['baseurl'],
        'scope' => 'email'
    ));
?>


您应该使用Facebook Javascript SDK,并使用Javascript函数FB.login()授权用户。教程就在这里

当弹出式登录框加载并且用户登录/连接时,该框将加载附加到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
    }
?>


这样做的目的是关闭弹出窗口并重新加载启动弹出窗口的原始页面。

我的整个网站都基于facebook的php sdk。通过javascript sdk初始化登录不会影响这一点吗?使用javascript sdk时,使用cookie:true参数生成init()。所以,Javascript SDK将令牌保存在一个cookie中,然后您的PHP SDK使用该cookie。这里描述了Init(),所以Javascript和PHP SDK都可以在同一个站点上工作,并且它们将使用cookie共享同一个会话。