使用drf social-oauth2调用convert-token接口返回access_denied问题求助
问题排查与解答
参数明确
- client_id & client_secret:必须填写Django后台创建的OAuth2 Application凭证,不是Google的密钥。创建Application时需满足:
client_type设为confidential(需验证client_secret)authorization_grant_type可选择password或client_credentials,保证该应用有权限调用转换接口
- token参数:必须传Google返回的access_token,而非Authorization Code。convert-token接口的作用是将第三方平台的access_token转换为Django OAuth2的token,因此需要的是已获取到的Google access_token。
额外排查项
若参数无误仍报错,检查以下点:
- Google OAuth2配置:在Django
settings.py中,确认SOCIAL_AUTH_GOOGLE_OAUTH2_KEY和SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET与Google控制台的凭证一致,且Google控制台已添加当前服务的授权域名/回调地址。 - 用户自动创建:确保
settings.py中SOCIAL_AUTH_CREATE_USERS = True(默认开启),否则Google账号对应的Django用户不存在时会被拒绝。 - backend拼写:确认请求中
backend=google-oauth2拼写正确,避免写成google等错误值。 - 请求格式:curl的
-d参数默认使用application/x-www-form-urlencoded,无需额外修改header,确保参数无URL编码错误(如&符号无需手动转义)。 - Google token有效性:验证Google access_token是否有效,无效token会导致转换失败。
内容的提问来源于stack exchange,提问作者Rafael
相关产品推荐
相关产品推荐

