Python:具有访问令牌

时间:2016-08-10 03:23:19

标签: python django facebook facebook-graph-api

我有一个Django应用程序,用户可以通过Facebook注册。我正在使用facebook-sdk来查询Facebook Graph API。我在为给定用户构建个人资料图片网址时遇到了问题。

根据各种消息来源,我可以使用以下内容以各种宽度呈现用户的图片:

<img src="https://graph.facebook.com/{{facebookUserId}}/picture?type=square&width=500">

这样,我不必在注册时存储用户的图片。但是,如果用户的图片是私有的,我需要附加一个访问令牌,如下所示:

<img src="https://graph.facebook.com/{{facebookUserId}}/picture?type=square&width=500&access_token={{accessToken}}">

问题是访问令牌最终会过期。我可以通过Graph API将短访问令牌(来自facebook javascript SDK)转换为长期访问令牌,但最终即使该令牌也将过期,此时我将无法再渲染图像。

我可以在用户模型上存储令牌的到期日期,以检查它何时过期:

class User(models.Model):
    accessToken = models.CharField(...)
    accessTokenExpires = models.DateTimeField(...)

但是每次我需要渲染图片时都要检查访问令牌是否过期,这可能意味着我应该使用我自己后端的URL,如/picture/<userId>?size=500,它会重定向到{{1使用存储的accessToken,但在那时我失去了使用Facebook的CDN渲染图像的速度。

我想我可以尝试使用cron'd worker任务更新所有用户的令牌,但这似乎不太理想,因为用户数量增长,我想知道是否有更好的方法。

在动态呈现图片网址的同时保持这些令牌最新的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)