的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天使用令牌。每次用戶訪問時,效率較低(但更容易)的方法是交換您的令牌。
請注意這個支持很快就會被棄用,在2012年10月3日,offline_access權限將被移除' – ajreal 2012-08-28 04:58:50