【问题标题】:How do i generate a fresh access token from a stale token in django-allauth?如何从 django-allauth 中的陈旧令牌生成新的访问令牌?
【发布时间】:2013-08-23 08:34:47
【问题描述】:

我在我的 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 脚本中使用令牌来获取数据,所以这对我不起作用。

【问题讨论】:

  • 过期的令牌对任何事情都没有好处。如果您可以使用它来获取有效令牌,那将完全违背让其过期的目的。
  • @user2357112 :这就是我要问的。有什么办法可以获得新鲜的代币吗?
  • how can i get a fresh token without having my users go through the login flow - 不可能!
  • @Shadowfax:有什么解决方法吗?
  • 您有什么要求?为什么需要长寿命令牌?

标签: python django facebook django-allauth


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-04-14
    • 2015-09-28
    • 2020-01-12
    • 2021-02-01
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 2019-05-31
    相关资源
    最近更新 更多