Python 如何访问使用django的social auth生成的令牌?

Python 如何访问使用django的social auth生成的令牌?,python,django,facebook,token,django-socialauth,Python,Django,Facebook,Token,Django Socialauth,我正在使用django的social_auth进行facebook身份验证。我尝试在用户使用facebook登录后访问令牌,这样应用程序就可以检索用户的朋友以及他/她的新闻提要上的内容。然而,我很难得到那个令牌。下面是我所拥有的。{{instance}}显示在模板中,但是当我添加{{token}}时,我得到一个错误,说'QuerySet'对象没有属性'tokens'。如何获取生成的令牌 看法 样板 这个错误说明了一切:QuerySet是您在本例中搜索到的任何内容的集合,UserSocialAut

我正在使用django的social_auth进行facebook身份验证。我尝试在用户使用facebook登录后访问令牌,这样应用程序就可以检索用户的朋友以及他/她的新闻提要上的内容。然而,我很难得到那个令牌。下面是我所拥有的。{{instance}}显示在模板中,但是当我添加{{token}}时,我得到一个错误,说'QuerySet'对象没有属性'tokens'。如何获取生成的令牌

看法 样板 这个错误说明了一切:QuerySet是您在本例中搜索到的任何内容的集合,UserSocialAuth。要在该模型中获取字段,需要迭代集合:

tokens = [x.tokens for x in instance]
另一种选择是,如果您确定筛选器将只返回一个实例(不是零,不是2个或更多),则可以使用get而不是筛选器:


但是请注意,单个提供者可以返回,如oauth_token和oauth_token_secret,因此您应该选择所需的提供者并/或对其进行适当的格式化。

谢谢,这很有效!作为一个单独的问题,您能否帮助我解决在我的开发环境中使用social auth的问题@sharataka我还在学习django social auth,不确定我是否能回答另一个问题。但我会仔细看一看,看看是否能提供帮助。我更喜欢使用user.social_auth.filterprovider='facebook'[0]而不是get,因为get可以删除多个对象错误,[0]会在查询中添加一个限制1。@omab不会隐藏应用程序逻辑错误而不是快速失败?如果您的前提是错误的,那么查询应该返回一个对象,但是没有返回,那么用这种方式查找错误会困难得多。如果您的模型设计得很好-例如,拥有unique_together=user,provider,-那就不必担心了。@mgibsonbr,如果您的代码将Facebook连接数限制为每个用户一个,那么是的。获取。。。更好,否则代码应该迭代相关的社会帐户,或者根据一些标准得到一个。嘿,只是想知道..你是如何访问导入UserSocialAuth模型的。因为当我从社交网站导入->时,auth.models会导入UserSocialAuth。它给了我一个无法解决的参考。请提供帮助。请尝试从social_django.models导入用户SocialAuth
{{instance}}
<br>
{{token}}
tokens = [x.tokens for x in instance]
instance = UserSocialAuth.objects.get(user=request.user, provider='facebook') 
token = instance.tokens