2011-03-01 88 views
6

的Facebook頁面的權限狀態下約offline_access:訪問令牌到期時間offline_access許可

使您的應用程序在任何時候代表 用戶進行授權的請求。默認情況下,大多數訪問令牌在短時間段後過期,以確保應用程序僅在用戶主動使用應用程序時代表用戶代表 發出請求。這個 權限使我們的OAuth端點 返回的訪問令牌長久存在。

然後我讀這個話題http://developers.facebook.com/docs/authentication/

嘗試這樣:

https://graph.facebook.com/oauth/access_token

client_id=YOUR_APP_ID&redirect_uri=YOUR_URL& 
client_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE 

此URL,而不offline_access許可迴應是這樣的:

access_token=.....&expires=5462 

但隨着offline_access許可作出答覆只是ACCESS_TOKEN。我沒有得到這個,Facebook說它長期居住,但是住了多久?

如何才能瞭解何時使用offline_access權限訪問令牌?

+1

請注意這個支持很快就會被棄用,在2012年10月3日,offline_access權限將被移除' – ajreal 2012-08-28 04:58:50

回答

4

使用offline_access權限時返回的訪問令牌永不過期。

編輯:根據文檔記號是'長壽命'。我假設你只需要處理他們不再工作的場景(如果這種情況發生的話)。

+0

是的,我閱讀Facebook文件其寫作長壽,然後我認爲多久,但我發現這個問題在Facebook論壇上。他們說永遠不會過期。 非常感謝,順便說一下,英語不是我的主要語言。 :) – 2011-03-03 07:44:31

+3

它是值得的;他們會過期。但是,這不是TIME過期令牌,而是用戶操作。當用戶更改密碼時,其訪問令牌會發生變化。 – 2011-04-26 19:26:01

+0

此功能僅在2012年7月5日前根據[此鏈接](http://developers.facebook.com/roadmap/offline-access-removal/) – naveen 2012-05-03 13:00:33

7

的Facebook引入了一個新的端點,允許開發者通用接入令牌(〜2小時壽命的)延伸到60天的令牌。它是作爲發送HTTP GET來簡單:

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 

的響應是位靠不住(相對於它們的正常JSON響應),所以準備解析響應。我選擇了PHP的parse_url函數。

// url to curl (note: make sure you pass in the correct values for your app 
// and the user access token you'd like to exchange. 
$url = 'https://graph.facebook.com/oauth/access_token?client_id=$fb_app_id&client_secret=$fb_app_secret&grant_type=fb_exchange_token&fb_exchange_token=$access_token; 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$response = curl_exec($ch); 

curl_close($ch); 

// parse response 
parse_str($response, $token_data); 

// exchanged token 
$access_token = $token_data['access_token']; 

echo 'exchanged access token: ' . $access_token; 

一旦你的交換令牌,頭向Facebook的訪問令牌調試器來檢查你的代碼是否正常工作。如果正確交換,到期日期應爲當前的60。

https://developers.facebook.com/tools/debug

如果你擔心你的訪問令牌到期,您可以檢查運行時到期,如果到期時間的臨近呼喚一個全新60天使用令牌。每次用戶訪問時,效率較低(但更容易)的方法是交換您的令牌。

2

的offline_access許可已被棄用,截至12月5日已被刪除,2012 的訪問令牌現在需要定期更換。流程詳述於here

棄用roadmap在這裏。