Я использую новый 4. * facebook php SDK, и у меня проблема! 😉
В основном я пытаюсь найти способ сделать запросы на график api после первого перенаправления, когда пользователь будет отправлен обратно на мой сайт после входа в facebook . В этом случае я (в моем index.php
):
$h = FacebookRedirectLoginHelper("blablabla"); $request = new FacebookRequest($h->getSessionFromRedirect(), 'GET', '/me'); $me = $request->execute()->getGraphObject();
и он отлично работает, и я могу распечатать дату о зарегистрированном пользователе.
Моя проблема в том, что если я перезагружу (f5) страницу index.php
то получаю исключение:
Fatal error: Uncaught exception 'Facebook\FacebookAuthorizationException' with message 'This authorization code has expired.' in /home/nourdine/development/faisbuk/vendor/facebook/php-sdk-v4/src/Facebook/FacebookRequestException.php:87
Поэтому мой вопрос: где я должен получить новый код авторизации, чтобы создавать новые вызовы графического api с аутентифицированным пользователем даже на страницах, которые не выполняются в результате процесса входа в facebook?
благодаря
Вам не нужен новый код авторизации. Вам нужно использовать один и тот же сеанс. $h->getSessionFromRedirect()
возвращает сеанс. Этот сеанс вы также хотите использовать в следующий раз.
Конкретно говоря, этот фрагмент кода должен быть реализован:
// see if we have a session in $_Session[] if( isset($_SESSION['token'])) { // We have a token, is it valid? $session = new FacebookSession($_SESSION['token']); try { $session->Validate($appid ,$secret); } catch( FacebookAuthorizationException $ex) { // Session is not valid any more, get a new one. $session =''; } }
Полный рабочий пример доступен на этой странице: Facebook SDK 4.0.0 для PHP: рабочий образец для управления сеансами .