PHP SDK需要两次登录…不';我先不认得

PHP SDK需要两次登录…不';我先不认得,php,facebook,login,sdk,Php,Facebook,Login,Sdk,我使用以下代码来验证用户是否登录。虽然用户可以登录,但他们必须单击登录按钮两次。此外,有时甚至在他们两次单击“登录”按钮后,我的页面“用户信息”部分(在页面中的位置早于内容)显示他们已注销,而实际页面显示他们已登录 这是代码。有人能建议一种更好的处理登录的方法吗 function isLoggedIn($facebook) { if (isset($facebook) and $facebook->getUser() != 0) { // UserID exists

我使用以下代码来验证用户是否登录。虽然用户可以登录,但他们必须单击登录按钮两次。此外,有时甚至在他们两次单击“登录”按钮后,我的页面“用户信息”部分(在页面中的位置早于内容)显示他们已注销,而实际页面显示他们已登录

这是代码。有人能建议一种更好的处理登录的方法吗

function isLoggedIn($facebook) {
    if (isset($facebook) and $facebook->getUser() != 0) {
        // UserID exists, but user may still not be logged in. Let's check:
        try {
            $facebook->api('/me', 'GET');
            // If this succeeds, then they are logged in.
            return true;
        } catch(FacebookApiException $e) {
            // Some kind of error, so not logged in.
            if(session_id() === '')
                session_destroy();
            return false;
        }
    } else {
        if(session_id() === '')
            session_destroy();
        return false;
    }
}
谢谢

$facebook = new Facebook(array( /* the data */));
$user = $facebook->getUser();
if($user) {
  //loged
} else {
  //not loged
}

足够了吗?

好吧,这里有一个快速解决方案。。。也许很脏,但我需要让它工作。必须点击两次是荒谬的

    $user = $facebook->getUser();
    if($user) {
        // do stuff cause user is now logged 
    }
    if(isset($_GET['fb_logged']) && $user == 0) {
        // not logged, would have to click twice but let's help that user.
        header('Location: '.$loginUrl);
    }

我也有同样的问题,我曾两次启动$facebook实例,通过使用一个并添加“offline_access”解决了这个问题,到目前为止它仍然有效,现在只需点击一次登录即可

$facebook = new Facebook(array( /* the data */));

你的应用程序在Facebook(画布页面)上吗?不,它是一个独立的网站。我有完全相同的问题!我发现任何地方都没有答案:(你有什么收获吗?
offline\u访问
权限早就被删除了,所以请不要再推荐了。