Я пробовал пару дней без везения, мне удалось использовать example.php, который поставляется с PHP-SDK и отлично работал. Мне просто нужно сохранить возвращенный сеанс и использовать его позже, чтобы я мог получить доступ без повторной аутентификации.
Я попытался сохранить сеансы в сериализованном поле в базе данных, а затем восстановить данные, неэрициализировать его и использовать функцию setSession в php-sdk для получения аутентификации. К сожалению, это не сработало,
Вот ссылка на предыдущий вопрос с образцами кода.
Facebook OAuth извлекает информацию на основе сохраненной сессии
Пожалуйста посоветуй?
Если вы хотите использовать токен доступа пользователя даже после того, как он вышел из вашего приложения, вам необходимо запросить разрешение offline_access
.
С помощью PHP PHP SDK v3 ( см. Github ) это довольно просто. Чтобы зарегистрировать кого-либо с разрешением offline_access
, вы спрашиваете его, когда вы создаете URL-адрес для входа. Вот как вы это делаете.
Сначала вы проверяете, зарегистрирован ли пользователь или нет:
require "facebook.php"; $facebook = new Facebook(array( 'appId' => YOUR_APP_ID, 'secret' => YOUR_APP_SECRET, )); $user = $facebook->getUser(); if ($user) { try { $user_profile = $facebook->api('/me'); } catch (FacebookApiException $e) { $user = null; } }
Если это не так, вы создаете URL-адрес «Войти с Facebook», запрашивающий разрешение offline_access
:
if (!$user) { $args['scope'] = 'offline_access'; $loginUrl = $facebook->getLoginUrl($args); }
А затем отобразите ссылку в шаблоне:
<?php if (!$user): ?> <a href="<?php echo $loginUrl ?>">Login with Facebook</a> <?php endif ?>
Затем вы можете получить токен доступа и сохранить его. Чтобы получить его, звоните:
if ($user) { $token = $facebook->getAccessToken(); // store token }
Использовать токен доступа, когда пользователь не вошел в систему:
require "facebook.php"; $facebook = new Facebook(array( 'appId' => YOUR_APP_ID, 'secret' => YOUR_APP_SECRET, )); $facebook->setAccessToken("...");
И теперь вы можете совершать вызовы API для этого пользователя:
$user_profile = $facebook->api('/me');
Надеюсь, это поможет !