Google OAuth2调用仅返回id_token未获取access_token问题排查
问题排查:调用Google OAuth2 Token接口仅返回id_token而非access_token
核心原因及解决方案
JWT payload缺少或错误设置
scope字段
服务账号授权的JWT必须指定目标API的作用域,未设置或设置错误时,接口只会返回id_token。针对翻译API,正确的scope应为https://www.googleapis.com/auth/cloud-translation或https://www.googleapis.com/auth/cloud-platform。检查你生成JWT的payload部分,确保包含该字段且值正确。aud字段配置错误
JWT的aud(受众)必须严格设为https://oauth2.googleapis.com/token,若填为其他Google API端点,会导致返回结果不符合预期。确认payload中的aud值是否准确。服务账号权限未配置到位
即使已关联翻译API,若服务账号未被赋予对应IAM角色,也会影响token返回。检查Google Cloud控制台的IAM页面,确认服务账号已获得Cloud Translation API User或等价权限。JWT其他字段不符合要求
即便token能通过tokeninfo验证,部分字段仍可能不符合授权规则:exp(过期时间)需设置在当前时间+1小时范围内,不能过长或过短;iat(签发时间)需为当前时间戳;sub字段必须设为服务账号的完整邮箱地址。
验证步骤
- 本地解码JWT,逐一核对
scope、aud、sub、exp等字段是否符合上述要求; - 确认服务账号的IAM权限配置正确;
- 重新生成合规JWT,再次发送POST请求,确保
grant_type参数严格为urn:ietf:params:oauth:grant-type:jwt-bearer。
内容的提问来源于stack exchange,提问作者Orden
相关产品推荐
相关产品推荐

