如何使用 django-graphql-social-auth 库获取刷新令牌

问题描述

嗨,我正在使用 django-graphql-social-auth 库,每当我使用此更改创建社交用户时:

import graphene
import graphql_social_auth


class Mutations(graphene.ObjectType):
    social_auth = graphql_social_auth.socialAuthJWT.Field()

和这个 Graphql 突变:

mutation SocialAuth($provider: String!,$accesstoken: String!) {
  socialAuth(provider: $provider,accesstoken: $accesstoken) {
    social {
      uid
    }  
    token
    refreshToken
    }
 }

我收到此错误

    {
  "errors": [
    {
      "message": "Cannot query field \"refreshToken\" on type \"SocialAuthJWT\".","locations": [
        {
          "line": 29,"column": 5
        }
      ]
    }
  ]
}

预先感谢您的帮助。

解决方法

我是这样解决的:

class SocialAuth(graphql_social_auth.SocialAuthMutation):
    user = graphene.Field(NewUserType)
    token = graphene.String()
    refresh_token = graphene.String()

    @classmethod
    def resolve(cls,root,info,social,**kwargs):
        try:
            from graphql_jwt.shortcuts import get_token,create_refresh_token
        except ImportError:
            raise ImportError(
                'django-graphql-jwt not installed.\n'
                "Use `pip install 'django-graphql-social-auth[jwt]'`.")

        return cls(user=social.user,token=get_token(social.user),refresh_token=create_refresh_token(social.user))