Когда вы делаете
$user = $facebook->getUser();
наличие $user
не ноль не означает, что у вас есть действительный токен доступа для выполнения некоторых вызовов API. Это просто означает, что пользователь вошел в систему.
Чтобы проверить, есть ли у вас активный токен доступа, можно попытаться сделать вызов API, как код, который вы написали в своем вопросе:
require "facebook.php";
$facebook = new Facebook(array(
'appId' => YOUR_APP_ID,
'secret' => YOUR_APP_SECRET,
));
$user = $facebook->getUser();
if ($user) {
// The user is logged in
try {
$user_profile = $facebook->api('/me');
// Here : API call succeeded, you have a valid access token
} catch (FacebookApiException $e) {
// Here : API call failed, you don't have a valid access token
// you have to send him to $facebook->getLoginUrl()
$user = null;
}
} // else : the user is not logged in
Итак, у вас есть 2 случая, когда вам нужно отправить пользователя на $facebook->getLoginUrl()
, и в обоих случаях мы сделали $user == null
. Так что нам просто нужно добавить:
<?php if ($user): ?>
<a href="<?php echo $facebook->getLogoutUrl() ?>">Logout of Facebook</a>
<?php else: ?>
<a href="<?php echo $facebook->getLoginUrl() ?>">Login with Facebook</a>
<?php endif ?>
Для полной информации вы можете увидеть пример Facebook PHP SDK , который хорошо документирован.
Надеюсь, это поможет.