我正在使用django的social_auth进行facebook身份验证。我试图在用户使用Facebook登录后访问令牌,以便应用程序可以执行诸如检索用户的朋友以及他/她的新闻源上的内容。但是,我无法获得该令牌。以下是我所拥有的。 {{instance}}显示在模板中,但是当我添加{{token}}时,我收到一条错误消息,指出'QuerySet'对象没有属性'令牌'。如何获取生成的令牌?
def friends(request):
instance = UserSocialAuth.objects.filter(user=request.user).filter(provider='facebook')
token = instance.tokens
return render_to_response('reserve/templates/friends.html', {'token':token, 'instance':instance},
context_instance=RequestContext(request))
{{instance}}
<br>
{{token}}
答案 0 :(得分:1)
错误说明了一切:QuerySet
是您搜索到的内容的集合(在本例中为UserSocialAuth
)。要获取该模型中的字段,您需要遍历集合:
tokens = [x.tokens for x in instance]
作为替代方案,如果您确定过滤器会返回完全一个实例(不是零,而不是2个或更多),您可以使用get
代替filter
:
instance = UserSocialAuth.objects.get(user=request.user, provider='facebook')
token = instance.tokens
但请注意,单个提供商可以返回more than one token,例如oauth_token
和oauth_token_secret
,因此您应该选择所需的和/或进行适当格式化。