2012-06-06 213 views
1

嗨我已經在這裏看到了答案 http://facebook.stackoverflow.com/questions/8982025/how-to-extend-access-token-validity-since-offline-access-deprecation 並給了它一個去,但我無法讓它工作。facebook擴展訪問令牌

我有一個過期的令牌 - 但明顯只是需要一種方法來自動更新它。 這可能可以有人滑倒我一些代碼

目前我想這

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}} 

任何幫助。由於 理查德


你好感謝你的幫助,我已經得到了擴展的東西的工作,我瞭解多一點 - 我有一個後續問題說,我的令牌無效 - 該怎麼辦呢? 我仍然登錄到Facebook,我已經授予我的應用程序的權限,所以它就在那裏,我只需要一個新的密鑰。

我已經試過這

$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的再次獲得詳細信息,但它似乎像Facebook要求是餅乾,你不能使用的file_get_contents在你的機器上。我試圖在飛行中這樣做,以免打擾任何彈出窗口的用戶,並且他們已經給予應用程序許可。

任何想法? Richard

哦,只是這樣做似乎也沒有工作。

+0

不能擴展標記無效,唯一有效的令牌可擴展 –

+0

有趣那麼你如何擴展一個有效的?實際上它們如何變得無效 –

+0

短期訪問令牌有效期爲一到兩個小時,在它們到期之後,您必須獲得一個新的令牌。 – CBroe

回答

0

試試這個代碼

+0

乾杯 - 基本上是使用我用Facebook設置的cookie來獲取新的訪問令牌。所以如果我沒有這個cookie,那麼它不會得到一個新的令牌? –

+0

如果你設置cookie爲false,那麼你也可以獲得新的令牌。 – prakash

0

按照Removal of offline_access permission

方案4:客戶端OAuth和擴展ACCESS_TOKEN過期時間通過新的端點

使用下面的新端點,您將能夠擴展 現有,未過期,短命用戶的到期時間 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