在this url,Facebook解释了如何使用Facebook Connect进行身份验证。
基本上,步骤如下:
重定向到Facebook作为示例。因此,我将获得授权码
https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=email,read_stream
将HTTP帖子发送到以下地址,要求 access_token
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
Facebook将使用 access_token 回复最后一条HTTP帖子。细
上面收到的 access_token 过期。它仍然有效的秒数与 access_token 一起返回。好。
问题是:过期后我该怎么办?
来自Facebook oficial网站:
除了访问令牌(access_token参数)之外,响应还包含令牌到期前的秒数(expires参数)。令牌过期后,您需要重新运行上述步骤以生成新代码和access_token
等待!我无法重新执行上述步骤,因为为了获得新的授权码,我必须重定向(步骤1)。我不想重定向。我想通过Web服务获取新的授权代码。用户已经授权我的申请,我不会再有机会重定向他或她。
我该怎么办?
PS:从逻辑上考虑,在access_token到期后我不需要获得新的授权码。一个新的access_token就足够了。但是,正如我所示,facebook说授权代码也会过期。
答案 0 :(得分:2)
您可能希望使用“offline_access”权限。这允许令牌长寿。请参阅权限页面:http://developers.facebook.com/docs/authentication/permissions/。
答案 1 :(得分:0)
由于他们已经删除了offline_access,Facebook提供了一种延长现有短期令牌到期的方法。
只需提出以下请求:
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
并且,关于长期访问令牌的到期,
Currently the long-lived user access_token will be valid for 60 days while the
short-lived user access_tokens are currently valid from 1 to 2 hours.
有关详细信息,请参阅https://developers.facebook.com/roadmap/offline-access-removal/