2012-06-06 3 views
1

Привет, я видел ответ здесь http://facebook.stackoverflow.com/questions/8982025/how-to-extend-access-token-validity-since-offline-access-deprecation и дал ему уйти, но у меня проблемы с его работой.facebook, расширяющий токен доступа

У меня есть токен с истекшим сроком действия - но obviosuly просто нужен способ автоматического обновления. это возможно кто-то может проскользнуть мне код

В настоящее время я пытаюсь это

try { 
$result = $facebook->api(
       '/me/permissions/', 
       'get', 
       array('access_token' => $token) 
     ); 
} 
catch(FacebookApiException $e) { 

    echo "token invalid"; 
    $facebook->setAccessToken($token); 
    echo $facebook->getExtendedAccessToken(); 
} 

Но я все еще получаю

token invalid{"error":{"message":"Error validating access token: Session has expired at unix time 1338858000. The current unix time is 1338985046.","type":"OAuthException","code":190,"error_subcode":463}} 

Любая помощь. Благодаря Richard


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

Я попытался это

$facebook = new Facebook(array(
       'appId' => FACEBOOKAPPID, 
       'secret' => FACEBOOKSECRET, 
       'cookie' => true, 
      )); 

$url = $facebook->getLoginUrl(array('canvas'=>1,'fbconnent'=>1,'scope'=>'offline_access,publish_stream,email,user_about_me,user_birthday,user_website')); 
file_get_contents($url); 
$fb_session = $facebook->getUser(); 
echo $fb_session.'<br />'; 

$token = $facebook->getExtendedAccessToken();   
echo $token.'<br />'; 

Как мне кажется, что вам нужно «логин» на Facebook, чтобы получить подробную информацию еще раз, но мне кажется, что вы не можете использовать file_get_contents, как facebook требует печенье, которое на вашей машине. Я пытаюсь сделать это на лету, чтобы не беспокоить пользователя с помощью всплывающих окон, а также они уже дали разрешение на использование приложения.

Любые идеи? Richard

О, и это просто не работает.

+0

Вы не можете продлить недопустимый знак, только действительные лексемы расширяемый –

+0

Интересно так, как вы продлить действующий один? и действительно, как они становятся недействительными. –

+0

Срок действия токена недолгосрочного доступа действителен в течение одного-двух часов, после чего они истекают, и вам нужно будет получить новый. – CBroe

ответ

0

попробуйте этот код

+0

Приветствия - это то, что в основном с помощью файла cookie, который я установил с помощью facebook, чтобы получить новый токен доступа. Итак, если у меня нет этого файла cookie, тогда он не получит новый токен? –

+0

Если вы установите cookie false, вы также сможете получить новый токен. – prakash

0

Согласно Removal of offline_access permission:

Сценарий 4: на стороне клиента OAuth и расширение access_token Истечение времени через Новый Endpoint

Использование новой конечной точки ниже, вы сможете расширить срок годности существующий, не истек, недолговечный пользователь access_token. Обратите внимание, что конечная точка может использоваться только для расширения неактивного пользователя access_tokens . Если вы передаете access_token что было долгоживущего время истечения срока, конечная точка будет просто передать тот же access_token обратно к вам без изменения или продлений времени истечения

После долгоживущий маркер доступа истекает вас» Вам нужно будет получить новый краткосрочный токен, а затем расширить его.
Что касается «как продлить его», это на тот же пост:

https://graph.facebook.com/oauth/access_token?    
    client_id=APP_ID& 
    client_secret=APP_SECRET& 
    grant_type=fb_exchange_token& 
    fb_exchange_token=EXISTING_ACCESS_TOKEN 

 Смежные вопросы

  • Нет связанных вопросов^_^