Срок действия токена доступа к долгоживущей странице истек через пару часов с использованием PHP SDK 3.2.0

Удалить разрешение offline_access включено в дополнительных настройках моего приложения;

Сначала я вызываю следующую функцию:

public function app_login( $url_redirect=null ) {
        $facebook = new Facebook(array(
            'appId' => APP_ID,
            'secret' => APP_SECRET,
            'cookie' => true,
            'fileUpload' => true
        ));

        //check if redirection url specified
        if( $url_redirect != null )
            $go_to = $url_redirect;
        else
            $go_to = 'APP_URL';


        $loginParams = array(

            'scope'         => 'publish_stream,user_activities,user_checkins,user_interests,user_location,manage_pages,email,read_insights,read_stream',
            'redirect_uri'  => $go_to
        );
        $login_url = $facebook->getLoginUrl( $loginParams );

        if ( ! $facebook->getUser() ) {

            echo '<script>window.top.location = "' . $login_url . '";</script>';

            return true;
        }

        return $facebook;

    }

возвращая значение с именем $facebook, затем я запрашиваю расширенный токен пользователя со следующими вызовами:

$facebook->setExtendedAccessToken();
$extended_token = $facebook->getAccessToken();

сохранить $extended_token в моей базе данных, а затем получить пользовательские страницы с

$pages = @json_decode( FB_Actions::file_get_contents_curl( 'https://graph.facebook.com/' . $facebook->getUser() . '/accounts?access_token=' . $extended_token ) );

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

Кто-нибудь знает, в чем моя проблема?


comment
это ошибка Facebook developers.facebook.com/bugs/ . Теперь я пытаюсь найти кого-то, кто нашел способ обойти   -  person crisful    schedule 31.08.2012


Ответы (1)


У меня была такая же проблема, и я нашел решение здесь - Живой токен доступа с setExtendedAccessToken() возвращает недолговечный токен

// ask for the extended token and get it from session ...
$facebook->setExtendedAccessToken();
$access_token = $_SESSION["fb_".FB_APP_ID."_access_token"];
// now set it into the facebook object ....
$facebook->setAccessToken($access_token);
// now our fb object will use the new token as usual ...
$accessToken = $facebook->getAccessToken();

Также используйте инструмент отладки facebook — https://developers.facebook.com/tools/debug

person Dejano    schedule 16.05.2013