![](/img/trans.png)
[英]How to authenticate by Access Token in code using python-social-auth
[英]How can I return the refresh token using python-social-auth and django-graphql-auth?
使用社交身份验证时如何返回刷新令牌? 我在这里尝试了这个解决方案我不知道如何使它与 graphql 兼容。
这是我的尝试:
import graphql_social_auth
from graphql_jwt.shortcuts import get_token
class SocialAuth(graphql_social_auth.SocialAuthJWT):
refresh_token = graphene.String()
token = graphene.String()
@classmethod
def resolve(cls, root, info, social, **kwargs):
return cls(
user=social.user,
token=get_token(social.user),
refresh_token=social.extra_data['refresh_token']
)
当我注释掉刷新令牌时,用户和令牌字段没问题。 我只是不知道从哪里获得刷新令牌,它似乎不在extra_data中。
我已经处理这个问题几个小时了,所有的搜索结果都没有帮助。 请,非常感谢任何指导。
扩展SocialAuthJWT
时不需要再次声明 token 字段,因为它已经具有来自JSONWebTokenMixin
mixin 的token
字段,除非您需要用不同的类型覆盖它。
至于刷新令牌,您可以执行以下操作来获取它:
import graphql_social_auth
from graphql_jwt.shortcuts import get_token
from graphql_jwt.shortcuts import create_refresh_token
class SocialAuth(graphql_social_auth.SocialAuthJWT):
refresh_token = graphene.String()
@classmethod
def resolve(cls, root, info, social, **kwargs):
if social.user.refresh_tokens.count() >= 1:
refresh_token = social.user.refresh_tokens.last()
else:
refresh_token = create_refresh_token(social.user)
return cls(
user=social.user,
token=get_token(social.user),
refresh_token=refresh_token
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.