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

React+Spring Boot集成Google社交登录获取用户数据遇未授权错误

解决Google OAuth2后端调用userinfo接口未授权问题

排查与修复方案

1. 验证access_token有效性与权限范围

  • 先用命令行直接测试token是否可用:
    curl https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=你的token值
    
    如果返回未授权,说明token本身存在问题,优先排查前端获取逻辑。
  • 确认前端react-oauth/google的scope参数必须包含基础权限,同时加上Gmail API所需权限:
    <GoogleLogin
      clientId="你的客户端ID"
      scope="openid email profile https://www.googleapis.com/auth/gmail.readonly"
      // 其他配置项
    />
    
    缺少openid或用户信息权限会导致userinfo接口拒绝访问。

2. 核对Google Cloud控制台配置

  • 检查OAuth客户端ID类型:前端需用「Web应用」类型,确保JavaScript来源、授权回调地址配置正确。
  • 确认授权同意屏幕状态:测试阶段必须添加测试用户,否则非项目所有者的授权请求会触发权限限制。
  • 启用必要API:在Google Cloud API库中,确保Google People API(userinfo接口依赖)和Gmail API已启用,未启用会直接返回未授权。

3. 优化后端调用逻辑

  • 避免直接拼接token到URL,改用请求头传递,防止编码或安全问题:
    HttpHeaders headers = new HttpHeaders();
    headers.setBearerAuth(accessToken);
    HttpEntity<String> entity = new HttpEntity<>(headers);
    ResponseEntity<String> response = restTemplate.exchange(
        "https://www.googleapis.com/oauth2/v1/userinfo?alt=json",
        HttpMethod.GET,
        entity,
        String.class
    );
    
  • 排查是否有代理、防火墙拦截请求,导致请求头被篡改或无法到达Google服务器。

4. 调试token详细信息

  • 调用tokeninfo接口查看token的权限、受众等关键信息:
    curl https://oauth2.googleapis.com/tokeninfo?access_token=你的token值
    
    重点检查scope字段是否包含所需权限,aud字段是否与你的客户端ID匹配——aud不匹配意味着token是为其他客户端生成的,无法用于当前后端调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:20:58