В настоящее время я использую PHP Facebook SDK для своего проекта (http://github.com/facebook/php-sdk/).. Я настроил его так, чтобы пользователю приходилось нажимать ссылку для посещения Facebook, которая затем проверяет пользователя на использованиеприложения, а затем вернуть сведения о сеансе на мой сайт, что нормально. Однако я хочу сохранить эти сведения о сеансе в базе данных, чтобы пользователь, вошедший в систему, мог получить доступ к информации из своей учетной записи в любое время. В настоящее время, еслипользователь выходит из Facebook, а затем пытается извлечь информацию с моего сайта, я получаю следующее исключение: «OAuthInvalidTokenException: ошибка при обработке маркера доступа.» Если пользователь вошел в Facebook на том же компьютере, то проблема не возникает.
Есть ли что-то, что я должен установить, или есть какой-то другой способ, которым я должен выполнить это подключение, чтобы иметь возможность извлекать данные, когда пользователь не вошел в систему?
код, который я использую для получения / установки сеанса Facebook:
require 'libraries/facebook/facebook.php';
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'xxxx',
'secret' => 'xxxx',
));
$session = $facebook->getSession();
$me = null;
// Session based API call.
if ($session) {
//Save to database
} catch (FacebookApiException $e) {
error_log($e);
}
} else {
$loginUrl = $facebook->getLoginUrl();
header('Location: ' . $loginUrl);
}
Как только сеанс сохранен в базе данныхиз этой части я отображаю данные, публикуя сериализованный сеанс базы данных в этом:
$session = unserialize($_POST['session']);
require_once('libraries/facebook/facebook.php');
$facebook = new Facebook(array(
'appId' => 'xxxx',
'secret' => 'xxxx',
));
$facebook->setSession($session, false);
try {
$uid = $facebook->getUser();
// Do stuff
} catch (FacebookApiException $e) {
echo "<tr><td>" . $e . "</td>";
}
Что-то явно не так с тем, что я здесь делаю?Или я не могу использовать этот метод для создания oAuth-соединения, которое позволяет запрашивать данные для пользователей, когда они не вошли в систему?
Спасибо,
Dan