Ошибка проверки токена доступа: срок действия сеанса истек во время unix

Возможный дубликат:
Следствие прекращения поддержки Facebook offline_access

Я публикую эту проблему здесь, потому что нигде не смог найти ответ для своего конкретного случая.

Я создал PHP-приложение на стороне сервера, которое автоматически публикует/демонстрирует на нашей фан-странице каждую неделю случайную ссылку на один из наших продуктов.

Этот скрипт отлично работал до 10 дней назад, теперь мы получаем следующую ошибку, когда мы вызываем скрипт вручную:

Fatal error: Uncaught OAuthException: Error validating access token: Session has expired at unix time 1355862507. The current unix time is 1356217401. thrown in /home/webadmin/virtualsheetmusic.com/html/facebook/API/base_facebook.php on line 1249

Теперь я понял, что проблема в переданном access_token, но я не могу понять, как сгенерировать новый в формате, который я использую с этим приложением.

Вот формат токена, который мы использовали до сих пор:

$fanpagetoken = '<REMOVED ACCESS TOKEN FROM TEXT>';

А вот код PHP, который мы используем для публикации на нашей стене:

    #Define vars...
$day = strtotime($today);
$day = date("l, F j, Y", $day);

$deadline = strtotime("+1 week");
$deadline = date("l, F j, Y", $deadline);

// Create our Application instance (replace this with your appId and secret).


$facebook = new Facebook(array(
  'appId'  => $appid,
  'secret' => $secret,
));



$attachment = array(
                    'access_token' => $fanpagetoken,

                    'message' => "Sheet Music Showcase for ".$day.":",
                    'name' => $headline,
                    'caption' => "Showcase Expiration: $deadline",
                    'link' => 'http://www.ourwebsite.com/s/'.$createsession,
                    'description' => 'View the complete high quality PDF sheet music file, listen to related audio files and more!',
                    'picture' => 'http://www.virtualsheetmusic.com/images/icons/new_downloadsHome/'.$mainid.'.gif',
                    'actions' => array(array('name' => 'Learn more...', 
                                      'link' => 'http://www.virtualsheetmusic.com/s/'.$createsession))
                    );


$result = $facebook->api('/oursitefanpage/feed/',
                            'post',
                            $attachment);

Как сгенерировать новый токен в этом формате?

Любая помощь очень приветствуется!

Заранее спасибо за любые мысли

Лучший, Фаб.


person Fabrizio Ferrari    schedule 22.12.2012    source источник


Ответы (1)


У вас может быть бессрочный токен для вашей фан-страницы. Следуйте простым шагам:

  1. Получите расширенный токен администратора (т.е. ваш) (срок действия 2 месяца). Перейдите по ссылке, чтобы получить расширенный токен. Работает безупречно:

    Как продлить срок действия маркера доступа с момента offline_access устаревание

  2. Используя этот токен, получите список страниц/приложений-

    $facebook->api("/USER_ID/accounts"); 
    
  3. Получите бессрочный токен доступа для любой страницы.

    $facebook->api("/PAGE_ID?fields=access_token");
    

(Вы можете использовать инструмент отладки Facebook, чтобы проверить действительность токена.)

person Sahil Mittal    schedule 23.12.2012
comment
Спасибо за ваш ответ, но похоже, что у меня возникли проблемы прямо на предложенном вами первом шаге. - person Fabrizio Ferrari; 23.12.2012
comment
Я попытался вызвать токен расширенного доступа с помощью: $facebook = new Facebook(array('appId' => $appid, 'secret' => $secret, )); $exttk = $facebook->getExtendedAccessToken(); После добавления функции в класс Facebook я ничего не получаю внутри переменной $exttk... есть идеи? Спасибо! - person Fabrizio Ferrari; 23.12.2012
comment
В вашем коде должна быть какая-то ошибка. Кстати, вы можете проверить это напрямую в браузере: graph.facebook.com/oauth/access_token? grant_type=fb_exchange_token& client_id=APP_ID& client_secret=APP_SECRET& fb_exchange_token=SHORT_LIVED_ACCESS_TOKEN - person Sahil Mittal; 23.12.2012
comment
осторожно обменивайте APP_ID, APP_SECRET и SHORT_LIVED_ACCESS_TOKEN! - person Sahil Mittal; 23.12.2012