You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Rest中Djoser对接Google OAuth提示session value state缺失问题

解决Djoser Google OAuth "session value state is missing" 错误

问题根源

Djoser的Google OAuth后端要求state参数必须与用户发起授权请求时存储在session中的值一致。你的代码存在两个核心问题:

  1. 未在POST请求中携带用户的session Cookie,导致Djoser无法从对应session中读取初始生成的state值
  2. 可能跳过了Djoser的授权初始化流程,未让Djoser生成并存储state到session中

解决方案步骤

1. 走完整的授权流程

用户的授权必须先经过Djoser的初始化步骤:

  • 引导用户访问Djoser的Google OAuth初始化接口:GET /auth/o/google-oauth2/
  • Djoser会自动生成state值并存储到用户的session中,然后重定向到Google授权页面(已携带state参数)
  • 用户完成Google授权后,Google会重定向到你配置的redirect_uri(即你的RedirectSocial视图地址)

2. 修改RedirectSocial视图代码

在POST请求到Djoser接口时,携带当前请求的session Cookie,让Djoser能读取到对应的state值:

class RedirectSocial(APIView):

    def get(self, request, *args, **kwargs):
        code = request.GET.get('code', '')
        state = request.GET.get('state', '')
        
        form_data = {
            'code': code,
            'state': state,
            'client_id': '855150297727-frj54btbp93i1g50tglt5klg7g1jvug6.apps.googleusercontent.com',
            'client_secret': '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',
            'redirect_uri': 'https://7bfb-31-56-195-93.ngrok-free.app/google',
            'grant_type': 'authorization_code',
        }

        # 关键:携带当前请求的session Cookie,让Djoser能读取到存储的state
        response = requests.post(API_URL, data=form_data, cookies=request.COOKIES)

        response_data = response.json()
        print(response_data)
        return Response(response_data)

3. 验证配置一致性

确保以下配置完全匹配:

  • form_data中的client_id/client_secret与Django settings中SOCIAL_AUTH_GOOGLE_OAUTH2_KEY/SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET一致
  • redirect_uri与Google开发者控制台中配置的回调地址、Djoser设置的回调地址完全一致
  • 由于使用ngrok,需在settings中设置SOCIAL_AUTH_REDIRECT_IS_HTTPS = True,避免HTTP/HTTPS不匹配导致的session问题

可选:直接使用Djoser内置的回调视图

如果不需要自定义逻辑,完全可以省略自己的RedirectSocial视图,直接将Google的回调地址配置为Djoser的内置回调接口:https://7bfb-31-56-195-93.ngrok-free.app/auth/o/google-oauth2/callback/,Djoser会自动处理code验证、token生成流程。

内容的提问来源于stack exchange,提问作者Parham Ahmarypour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 17:34:53