2

我正在使用 django 的 social_auth 进行 facebook 身份验证。一旦用户使用 facebook 登录,我就会尝试访问令牌,以便该应用程序可以执行诸如检索用户的朋友以及他/她的新闻源上的内容之类的操作。但是,我无法获得该令牌。下面是我所拥有的。{{instance}} 显示在模板中,但是当我添加 {{token}} 时,我收到一条错误消息,提示“QuerySet”对象没有属性“tokens”。如何获取生成的令牌?

看法

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}}
4

1 回答 1

2

该错误说明了一切: aQuerySet是您搜索的任何内容的集合(在本例中为UserSocialAuth)。要获取该模型中的字段,您需要遍历集合:

tokens = [x.tokens for x in instance]

作为替代方案,如果您确定您的过滤器将只返回一个实例(不是零,不是 2 或更多),您可以使用get而不是filter

instance = UserSocialAuth.objects.get(user=request.user, provider='facebook') 
token = instance.tokens

但是请注意,单个提供者可以返回多个令牌,例如oauth_tokenand oauth_token_secret,因此您应该选择您想要的令牌和/或适当地格式化它。

于 2012-11-27T03:08:56.097 回答