3

我已经在我的 django 项目中集成了 allauth,用户可以通过他们的 facebook 帐户登录。现在他们的令牌在数据库中可用,但是当我使用它们从 facebook 获取用户的数据时,会导致令牌已过期的错误。所以我想问的是:

  1. 当用户登录我的网站时,django-allauth 是否/可以更新令牌?
  2. 如果它可以/这样做,那么我如何在不让我的用户通过登录流程的情况下获得新的令牌(可能是伪造的登录流程)?

关于 2 的旁注:我在 facebook 文档上搜索了这方面的内容,他们提供了一种通过 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 脚本中使用令牌来获取数据,所以这对我不起作用。

4

1 回答 1

1

一个典型的用户访问令牌有效期为 2 小时,您可以将其延长至 60 天。但是您不能在没有用户交互的情况下刷新令牌。否则,限制有效性是没有意义的。这是一个重要功能,如果用户几天不使用应用程序,该应用程序应该无法再使用他的令牌。

因此,您无法使用 cron 作业刷新 Token。用户必须刷新它(例如,JavaScript SDK 中的 FB.getLoginStatus)。

有关访问令牌的更多信息:https ://developers.facebook.com/docs/facebook-login/access-tokens/

于 2013-08-23T08:45:45.760 回答