我使用以下代码来验证用户是否登录。虽然用户可以登录,但他们必须单击登录按钮两次。此外,有时即使在他们点击两次登录按钮后,我的页面"用户信息"部分(在页面中比内容更早)也会显示他们已注销,而实际页面则显示他们已登录。
这是代码。有人能建议一种更好的登录处理方式吗?
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 */));