2011-03-01 90 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在这里。