Аутентификация Facebook с использованием PHP-SDK - PullRequest
4 голосов
/ 19 сентября 2010

Я пытался пару дней без удачи, мне удалось использовать файл example.php, который поставляется с PHP-SDK и работал отлично. Мне просто нужно сохранить возвращенный сеанс и использовать его позже, чтобы я мог получить доступ без повторной аутентификации.

Я попытался сохранить сеансы в сериализованном поле в базе данных и затем восстановить данные, десериализовать их и использовать функцию setSession в php-sdk для получения аутентификации. К сожалению, это не сработало,

Вот ссылка на предыдущий вопрос с примерами кода.

Facebook OAuth извлекает информацию на основе сохраненного сеанса

Пожалуйста, совет?

1 Ответ

7 голосов
/ 01 июня 2011

Обновление: Автономный доступ в устарел . Вместо этого используйте что-нибудь другое.


Если вы хотите использовать токен доступа пользователя даже после того, как он вышел из вашего приложения, вы должны запросить разрешение offline_access.

С Facebook 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');

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...