6

目前,我正在从文档页面运行 django-graphqljwt 的基本示例。https://django-graphql-jwt.domake.io/en/latest/quickstart.html

import graphene
import graphql_jwt


class Mutation(graphene.ObjectType):
    token_auth = graphql_jwt.ObtainJSONWebToken.Field()
    verify_token = graphql_jwt.Verify.Field()
    refresh_token = graphql_jwt.Refresh.Field()


schema = graphene.Schema(mutation=Mutation)

但是,如果我运行突变,它会在界面tokenAuth中引发以下错误。请注意,如果我输入了不正确的凭据,它会抛出一个“ ”而不是下面的。GraphiQLPlease enter valid credentials

{
  "errors": [
    {
      "message": "'str' object has no attribute 'decode'",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "tokenAuth"
      ]
    }
  ],
  "data": {
    "tokenAuth": null
  }
}
4

3 回答 3

15

我在 github 上发现这是该django-graphql-jwt软件包的一个未解决问题,并且能够通过1.7.0使用PyJWT. 当前安装的是版本2.0

https://github.com/flavors/django-graphql-jwt/issues/241

于 2021-01-13T18:14:28.380 回答
5

我正在使用django-graphql-jwt==0.2.1没有这个问题的。显然,问题与现在的新版本django-graphql-jwt有关0.3.0。或者,正如您所提到的,您可以绑定PyJWTto 1.7.0

解决方案是在您的文件中使用这些有界包,requirements.txt如下所示:

django-graphql-jwt==0.3.0
PyJWT==1.7.0

或者

django-graphql-jwt==0.2.1
于 2021-03-06T14:40:36.793 回答
1

我遇到了类似的问题,这显然是因为PyJWT==2.3.0与 Dipanshu 在他的回答中提到的不兼容django-graphql-jwt,它在降级PyJWT==2.3.0PyJWT==1.7.0.

使用以下 pip 命令检查虚拟环境中 PyJWT 包的版本是否大于 2.0.0

pip show PyJWT

如果大于 2.0.0,请使用以下 pip 命令在您的虚拟环境中降级软件包

pip install --upgrade PyJWT==1.7.0
于 2021-11-16T15:31:26.653 回答