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

DRF-social-oauth2请求token报invalid_client错误求助

解决drf-social-oauth2返回invalid_client的问题

以下是几个排查和解决的关键点:

  • 去掉请求参数里的尖括号
    你的curl命令里client_id、client_secret等参数被<>包裹,这会导致服务器无法识别正确的凭证。直接移除尖括号,用原始字符串发送请求:

    curl -X POST -d "client_id=nBezU5O1OJT74Vt7bItsbdTgoUqcY4ytJuUcpibO&client_secret=pbkdf2_sha256$390000$mSUCDwLkV3iY4fYjAgEEMq$91mdrFYgz3mj5mayJxT6wcjPFLpMS1Hc3Z4TNl7PySc=&grant_type=password&username=admin@gmail.com&password=admin" http://localhost:8000/auth/token
    
  • 确认Application配置正确
    登录Django后台,检查创建的Application对象:

    • 类型必须选confidential(密码授权模式要求用这个类型)
    • 重定向URI可以留空,或者填个测试用的地址比如http://localhost:8000
    • 核对client_id和client_secret和你请求里的完全一致,别带多余空格或特殊字符
  • 适配自定义User模型的配置
    在settings.py里添加以下配置,让oauth2服务识别你的CustomUser:

    SOCIAL_AUTH_USER_MODEL = '你的应用名.CustomUser'
    OAUTH2_PROVIDER = {
        'USER_MODEL': '你的应用名.CustomUser',
        # 保留你原来的其他oauth2配置
    }
    

    把你的应用名替换成CustomUser所在的app名称

  • 验证用户状态
    确保测试用的admin@gmail.com是激活状态,且密码正确。可以用Django shell验证:

    from 你的应用名.models import CustomUser
    user = CustomUser.objects.get(email='admin@gmail.com')
    print(user.is_active)  # 应该返回True
    print(user.check_password('admin'))  # 应该返回True
    
  • 检查路由配置
    确认项目urls.py里正确引入了drf-social-oauth2的路由:

    from django.urls import path, include
    urlpatterns = [
        # 其他路由...
        path('auth/', include('drf_social_oauth2.urls', namespace='drf')),
    ]
    

内容的提问来源于stack exchange,提问作者Aaron Michael

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:40:32