我已经在我的django项目中集成了allauth,用户可以通过他们的Facebook帐户登录。现在他们的令牌在数据库中可用,但当我使用它们从facebook获取用户数据时,会导致令牌已过期的错误。 所以我想问一下:
关于2的旁注: 我在facebook docs上搜索了这个,他们提供了一种通过GET调用来刷新令牌的方法:
GET /oauth/access_token?
grant_type=fb_exchange_token&
client_id={app-id}&
client_secret={app-secret}&
fb_exchange_token={short-lived-token}
但这必须在令牌过期之前完成,而我在cron脚本中使用令牌来获取数据,因此这对我不起作用。
答案 0 :(得分:1)
典型的用户访问令牌有效期为2小时,您可以将其延长至60天。但是如果没有用户交互,您无法刷新令牌。否则,限制有效性是没有意义的。这是一项重要功能,如果用户在某些日子里没有使用某个应用,该应用就不应该再使用他的令牌了。
因此,您无法使用cron作业刷新令牌。用户必须刷新它(例如,JavaScript SDK中的FB.getLoginStatus)。
有关访问令牌的更多信息:https://developers.facebook.com/docs/facebook-login/access-tokens/