我正在玩Facebook上的Oauth 2.0授权,并想知道Facebook传递的访问令牌是否会过期.如果是这样,有没有办法请求长期访问令牌?
挖了一下之后,我发现了这个.这似乎是答案:
更新(11/April/2018)
该令牌将在约60天后过期.
当使用您的应用的用户向Facebook的服务器发出请求时,令牌将每天刷新一次,最多90天.
所有访问令牌需要在使用您的应用程序的人的同意下每90天续订一次.
Facebook变更公告(10/04/2018)
Facebook更新了令牌到期页面(10/04/2018)
offline_access:允许您的应用程序随时代表用户执行授权请求.默认情况下,大多数访问令牌在短时间后过期,以确保应用程序仅在主动使用应用程序时代表用户发出请求.此权限使我们的OAuth端点返回的访问令牌持久.
它是一个请求的权限值.
http://developers.facebook.com/docs/authentication/permissions
UPDATE
offline_access权限已被删除.
https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/
试试这可能会对你有所帮助
https://graph.facebook.com/oauth/authorize? client_id=127605460617602& scope=offline_access,read_stream,user_photos,user_videos,publish_stream& redirect_uri=http://www.example.com/
要获得终生访问令牌,您必须使用 scope=offline_access
意思scope=offline_access
是: -
使您的应用程序可以随时代表用户执行授权请求.默认情况下,大多数访问令牌在短时间后过期,以确保应用程序仅在主动使用应用程序时代表用户发出请求.此权限使我们的OAuth端点返回的访问令牌持久.
但根据facebook未来升级,offline_acees功能将从2012年10月3日起永久弃用.并且用户将获得60天长期访问令牌,并且在访问令牌到期之前Facebook将通知您或者您可以获得您的自定义通知功能从Facebook Api获取到期值..
请注意,Facebook现在正在弃用offline_access权限,以支持您可以请求"升级"到期的令牌.我现在正在处理这个,我自己,所以我没有更多的话要说,但这个文档可能会有所帮助:
https://developers.facebook.com/docs/offline-access-deprecation/
我带着与OP相同的问题来到这里,但是建议使用offline_access的答案正在为我带来危险信号.
安全方面,离线访问用户的Facebook帐户在质量上是不同的,远比仅使用Facebook进行单点登录更强大,不应轻易使用(除非你真的需要它).当用户授予此权限时,"应用程序"可以随时随地检查用户的帐户.我将"应用程序"放在引号中,因为它实际上是任何具有凭据的工具 - 您可以编写一整套与Web服务器无关的工具,这些工具可以访问用户同意分享给那些的任何信息.证书.
我不会使用此功能来解决短令牌生命周期; 这不是它的预期目的.实际上,令牌生存期本身就是一种安全功能.我还在寻找有关正确使用这些令牌的详细信息(我可以坚持下去吗?我应该如何保护它们?Facebook是否将OAuth 2.0"刷新令牌"嵌入主要内容中?如果没有,它在哪里和/或者如何刷新?),但我很确定offline_access不是正确的方法.
是的,它们确实会过期.有一个'expires'值与'access_token'一起传递,从我可以告诉它约2小时.我一直在寻找,但我没有办法要求更长的到期时间.
因为我有同样的问题 - 请参阅ben biddington关于此主题的优秀帖子,他用错误的令牌和正确的类型来澄清所有这些问题以发送请求.
http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/