如何从 Django-rest-framework-social-oauth2 转换令牌视图返回用户?



我目前正在使用Django-rest-framework-social-oauth2,它是convert-toke端点。我从Facebook发送用户令牌,并请求到此端点,成功后,响应以下数据:

{
"access_token": "************",
"token_type": "Bearer",
"expires_in": 36000,
"refresh_token": "************",
"scope": "read write"
}

但是,我还想获取经过身份验证的用户的 ID,所以我尝试在自定义视图中使用request.user,但它总是返回 AnonymousUser。

class SocialView(ConvertTokenView):

def post(self, request, *args, **kwargs):
response = super(SocialView, self).post(request, *args, **kwargs)

编辑:

我找到了一种方法,我可以通过响应中的access_token检索用户。

user = AccessToken.objects.get(token=response.data['access_token'])

但我不确定这是否是正确的方法?

检索AccessToken是实际访问令牌的实例,它具有用户属性。

token = AccessToken.objects.get(token=response.data['access_token'])
user = token.user

参考

  • https://github.com/evonove/django-oauth-toolkit/blob/master/oauth2_provider/models.py#L230

最新更新