PHP SDK需要两次登录..不会';不要先认出


PHP SDK Requires two logins...doesn't recognize first

我使用以下代码来验证用户是否登录。虽然用户可以登录,但他们必须单击登录按钮两次。此外,有时即使在他们点击两次登录按钮后,我的页面"用户信息"部分(在页面中比内容更早)也会显示他们已注销,而实际页面则显示他们已登录。

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

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 */));