Токен доступа действителен, но мы получаем OAuthException: ошибка активного токена доступа

Мы работали над приложением около 2 месяцев, и все шло отлично. мы использовали PHP SDK и автономный режим в разрешениях для входа в систему. Но поскольку несколько дней назад после недавних изменений в API Facebook и удаления автономного режима мы столкнулись с проблемой «Uncaught OAuthException: активный токен доступа должен использоваться для запроса информации о текущем Пользователь."

Основная проблема в том, что это происходит через некоторое время работы в нашем приложении (около 10 минут), но в то же время, когда мы проверяем действительность токена через эта ссылка мы видим, что токен все еще действителен, с другой стороны, cookie все еще существует, и срок его действия не истекает, но мы получаем эту ошибку: "Uncaught OAuthException: Для запроса информации о текущем пользователе необходимо использовать активный токен доступа.

Я уже переходил по этой ссылке и скачал последнюю версию, но это не помогло, может кто-нибудь помогите нам, пожалуйста, где может быть ошибка?


Спасибо за ответы, я думаю, как и yacon, кажется, есть ошибка при доступе к facebook-> api (/ me) в тот момент, когда мы обрабатываем некоторые части приложения с помощью javascript, что является настоящей головной болью, чтобы использовать javascript sdk и PhP sdk вместе друг с другом


person Siavosh    schedule 08.12.2012    source источник
comment
Кстати, я думаю, я должен упомянуть, что когда мы удаляем файлы cookie с наших веб-сайтов в браузере, мы можем снова успешно войти в систему, но через некоторое время происходит то же самое.   -  person Siavosh    schedule 08.12.2012
comment
Если вы используете PHP sdk, тогда для хранения токена используется сеанс - каков срок действия вашего сеанса?   -  person Sean Kinsey    schedule 08.12.2012
comment
У меня такая же проблема. Итак, после этой темы и очень заинтересованы в предлагаемых решениях   -  person FidoBoy    schedule 09.12.2012
comment
Тоже с такой же проблемой.   -  person eelkedev    schedule 21.12.2012


Ответы (3)


Вы можете решить эту проблему, просто сохранив токен доступа в переменной сеанса после getLoginUrl

$facebook->getLoginUrl(...)

затем всякий раз, когда вы инициализируете facebook

$facebook = new Facebook(array(
  'appId' => Yii::app()->params['facebook_appId'],
  'secret' => Yii::app()->params['facebook_appSecret'],
));

получить токен доступа из сеанса и установить его с помощью setAccessToken

$facebook->setAccessToken(Yii::app()->session['access_token']);

person 22francis    schedule 13.12.2012

Я решаю эту ситуацию следующим образом
1. Я получаю токен доступа на 1 час
2. Продлеваю срок действия токена на 60 дней
3. Сохраняю этот токен в сеансе и использую его для все запросы проекта.

         try{
               $facebook_uid = $facebook->getUser();
                $facebook->setExtendedAccessToken();
                $accessToken = $facebook->getAccessToken();
                $fbuser = $facebook->api('/me');
                $session['api_me'] = $fbuser;
                $session['tokenValue'] = $accessToken;
        }catch (Exception $e) {
                facebook_uid =null;
        }
person hemc4    schedule 12.12.2012
comment
$fbuser = $facebook-›api('/me'); он содержит информацию о пользователе. - person hemc4; 12.12.2012
comment
Хорошо спасибо! Я пробую ваш код... надеюсь, он поможет с новыми изменениями в PHP SDK. - person FidoBoy; 12.12.2012
comment
Еще одна вещь: $session не должна быть $_SESSION['api_me'] или $_SESSION['tokenValue']? - person FidoBoy; 12.12.2012
comment
Hemc, что вы имеете в виду, используя этот accessToken в дальнейших запросах. Допустим, мне нужно получить доступ к facebook-›api(/me), а затем в этой строке происходит исключение, так как же использовать accessToken, сохраненный в сеансе, чтобы избежать этого исключения? - person Siavosh; 15.12.2012

Я думаю, что это ошибка в API. Когда я использую $facebook->api('/'.$facebook_uid) вместо ->api('/me'), все работает.

person yacon    schedule 12.12.2012
comment
Я думаю, что так же, как и yacon, кажется, что есть ошибка при доступе к facebook-›api(/me) в тот момент, когда мы обрабатываем некоторые части приложения с помощью javascript, что является настоящей головной болью при использовании javascript sdk и PhP sdk вместе друг с другом. - person Siavosh; 19.12.2012