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

Google登录PHP脚本突发OAuth2令牌刷新unauthorized_client错误求助

解决Google登录OAuth2 unauthorized_client错误的方案

这个unauthorized_client错误是Google OAuth2授权流程里的高频问题,结合你的报错栈和代码,我整理了几个必查的修复方向:

1. 核对客户端凭据的准确性

先登录Google Cloud控制台找到你的项目,进入API和服务 → 凭据页面:

  • 确认你创建的是Web应用类型的OAuth客户端ID(别选错成桌面应用或其他类型);
  • 把config.php里的client_id和client_secret和控制台里的内容逐字符比对,包括大小写、特殊符号,别漏了任何字符或者多打空格;
  • 如果近期重新生成过凭据,一定要同步更新代码里的对应值。

2. 确保重定向URI完全匹配

控制台里的重定向URI必须和代码中GOOGLE_REDIRECT_URL的内容丝毫不差:

  • 比如本地测试用http://localhost/googlelogin/index.php,控制台里不能写成http://localhost/googlelogin/(少了index.php);
  • 协议要一致:本地用http就不能在控制台填https;
  • 域名、端口号也要完全对应,比如localhost:8080不能简化成localhost。

3. 处理无效/过期的令牌

你的代码直接复用$_SESSION['token'],但如果令牌已经过期或者被撤销,刷新时就会触发这个错误。建议给代码加上异常捕获,自动处理无效令牌的情况:
修改你的核心逻辑片段:

if($gClient->getAccessToken()){
    try {
        $gpUserProfile = $google_oauthV2->userinfo->get();
        // 后续的用户信息处理逻辑...
    } catch (Google_AuthException $e) {
        // 令牌无效,清空session并重新引导授权
        unset($_SESSION['token']);
        $gClient->setAccessToken(null);
        header('Location: ' . filter_var(GOOGLE_REDIRECT_URL, FILTER_SANITIZE_URL));
        exit;
    }
}

同时,你可以手动清除浏览器的Cookie和Session,测试全新的授权流程,避免旧的无效令牌干扰。

4. 确认相关API已启用

去Google Cloud控制台的API库,搜索并确认Google People API(或是旧版的OAuth2 API)已经被启用。如果API处于禁用状态,授权请求会被直接拒绝。

5. 检查项目是否被限制

如果是新创建的Google Cloud项目,可能需要完成开发者账号验证;如果项目违反了Google的服务条款,也会被限制OAuth功能。你可以去API和服务 → 仪表板查看有没有警告或限制提示,按照要求完成验证或整改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:23:40