2015-04-22 105 views
0

我使用Facebook PHP SDK來獲取用戶的訪問令牌。該代碼是從這裏https://developers.facebook.com/docs/php/gettingstarted/4.0.0 複製他們應該象下面這樣:當交換長壽命令牌時,Facebook圖形API停止返回到期嗎?

$helper = new FacebookRedirectLoginHelper('your redirect URL here'); 
$loginUrl = $helper->getLoginUrl(); 
// Use the login url on a link or button to redirect to Facebook for authentication 

然後在重定向操作:

$helper = new FacebookRedirectLoginHelper(); 
try { 
    $session = $helper->getSessionFromRedirect(); 
    var_dump($session); 
} catch(FacebookRequestException $ex) { 
    // When Facebook returns an error 
} catch(\Exception $ex) { 
    // When validation fails or other local issues 
} 

幾個星期前,我能看到過期值從返回API。但是現在只返回access_token。 Facebook是否改變了其API輸出?

+0

如果您想知道API實際返回的內容,那麼您應該「手工」調用該API - 否則您將無法判斷它是否僅僅是隱藏該信息的PHP SDK 。 – CBroe

+0

對不起,我還不夠清楚。我實際上正在使用XDebug檢查$ session變量。 var_dump只是說明我如何檢查它的另一種方式。 – thaiphv

回答

0

上面的代碼看起來不錯,但對於,

令牌到期溶膠: Facebook已經改變了它的終點重定向的URL萬歲令牌,

現在,終點是: https://graph.facebook.com/oauth/client_code?access_token=...&client_secret=...&redirect_uri=...&client_id= ...

另外一般情況下,facebook bydefault提供短期訪問令牌,如果您想要一個長達60天的長壽命令牌訪問權限,則可以使用以下功能。 link for ref

$ longLivedSession = $ facebookSession-> getLongLivedSession();

echo $ longLivedSession-> getToken();

查看以下鏈接,其中突出顯示了與長生命值相關的更多信息。 https://developers.facebook.com/docs/facebook-login/access-tokens#extending

http://www.devils-heaven.com/facebook-access-tokens/

+0

_「在你的catch語句中有一個額外的'\'異常之前」_ - 這不是一個錯誤,它只是意味着'Exception'類在默認的[namespace]中(http://php.net/manual/en /language.namespaces.php)... – CBroe

+0

@WisdmLabs,謝謝你的回答,但我沒有找到它。這些在FB開發人員網站中記錄得非常好。我想知道的是爲什麼我使用FB PHP SDK的示例代碼,但我沒有獲得expires值。 – thaiphv

0

更新:我學到了擴展令牌與範圍的離線訪問權限的帳戶創建。我全力支持並取消了訪問權限,令牌延長了60天。

看起來,擴展令牌返回0而不是過期日期,因爲它永不過期。擴展令牌開始打破我的應用程序,因爲它返回0.它用來返回約60天的時間戳。我將擴展令牌帶到Open Graph Debugger,https://developers.facebook.com/tools/debug/ Expires = Never的值。

任何人都可以證實這一點或指向更新的文檔。文檔仍然說60天。

相關問題