Как вы должны иметь дело с людьми, которые недавно вошли в Facebook.Зайдите на ваш сайт, если им будет ссылка «продолжить» (поскольку вы обнаружите, что они уже вошли в Facebook), а затем на странице, на которую вы направите их, вы получите эту ошибку.
Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user. thrown in /var/www/html/lib/base_facebook.php on line 1039
Я не понимаю, как вы должны это предотвратить?Это как-то связано с подписанной информацией, которую вы возвращаете в Facebook для получения access_token?Похоже, у этой подписанной информации может истечь срок действия (она имеет дату выхода).Как правильно справиться с этим в потоке вашего веб-сайта?
Предполагается ли, что вы напишите такой код:
<?php
$user = $facebook->getUser();
try {
// attempt to do a call just to see if you are going to have this issue
$profile = $facebook->api('/me');
} catch (Exception $e) {
$user = false;
}
if ($user) { ?>
<a href="start.php">Begin</a>
<?php } else { ?>
<fb:login-button scope="email" size="large">Connect</fb:login-button>
<?php } ?>
Вместо этого:
<?php
$user = $facebook->getUser();
if ($user) { ?>
<a href="start.php">Begin</a>
<?php } else { ?>
<fb:login-button scope="email" size="large">Connect</fb:login-button>
<?php } ?>
Возвращение $ user из SDK Facebook, похоже, говорит только о том, что есть cookie.И не, если это действительно сработает, когда вы будете выполнять вызовы API.
ОБНОВЛЕНИЕ : Так что моя единственная проблема с этим методом - когда у пользователя есть cookie на моемсайт, но вызов API не удается - я показываю им кнопку подключения.Пользователь нажимает кнопку подключения, она быстро появляется и исчезает.Поскольку это был не настоящий «auth.login», который только что произошел, пользователь не будет отправлен на мою страницу start.php через редирект JavaScript.Как другие справляются с этим?Я в тупике.Скажите, пожалуйста, есть ли другие недостатки в том, как я пытаюсь это сделать.