将Facebook帐户连接到Django用户

时间:2015-05-11 05:46:45

标签: django-allauth

我尝试将fb帐户永久连接到标准用户帐户。用户将使用他们自己的站点特定凭据登录,连接到他们的fb帐户,然后我们将能够对fb进行图形调用,而无需再次使用fb重新进行身份验证。

目前我正在这样做:

{% load socialaccount %}
{% providers_media_js %}
<a href ="{% provider_login_url "facebook" method='js_sdk' process='connect' %}">Facebook connect</a>

这只在数据库中存储一个短期令牌,每次用户注销fb时,这都会失效,并且必须重新进行身份验证。

我的问题是:

如何获得长期令牌?

这是否得到了所有认证的支持?

谢谢!

1 个答案:

答案 0 :(得分:1)

解决。这是一个从短生命令牌中获取长生命令牌的函数,您可以将其存储在SocialToken表中,然后用于所有后续的FB.api调用:

def get_long_life_token(short_life_token):

    import urllib
    import re

    url = "https://graph.facebook.com/oauth/access_token?client_id=<id>&client_secret=<secret>&grant_type=fb_exchange_token&fb_exchange_token=" + str(short_life_token) 

    try:
        data = urllib.urlopen(url).read()
        data = re.search('access_token=(.+?)&expires=', data).group(1)
        return data
    except Exception as e:
        raise e