我尝试将fb帐户永久连接到标准用户帐户。用户将使用他们自己的站点特定凭据登录,连接到他们的fb帐户,然后我们将能够对fb进行图形调用,而无需再次使用fb重新进行身份验证。
目前我正在这样做:
{% load socialaccount %}
{% providers_media_js %}
<a href ="{% provider_login_url "facebook" method='js_sdk' process='connect' %}">Facebook connect</a>
这只在数据库中存储一个短期令牌,每次用户注销fb时,这都会失效,并且必须重新进行身份验证。
我的问题是:
如何获得长期令牌?
这是否得到了所有认证的支持?
谢谢!
答案 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