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

解决无头Linux批处理应用的Google OAuth2重定向URI配置问题

Google OAuth 2.0桌面客户端凭证授权问题解决方案

桌面客户端重定向URI的核心规则

  • 桌面(Installed App)类型的客户端凭证无需手动配置重定向URI,Google预定义了两个合法的URI:http://localhost 和 urn:ietf:wg:oauth:2.0:oob
  • 你遇到的redirect_uri_mismatch错误,是因为手动设置了Web类型的自定义URI,与桌面凭证的预定义规则冲突导致的

正确获取令牌的两种方法

方法1:使用urn:ietf:wg:oauth:2.0:oob(无头服务器首选)

  1. 在代码中指定该预定义URI:
    $client->setRedirectUri('urn:ietf:wg:oauth:2.0:oob');
    $authUrl = $client->createAuthUrl();
    printf("Open this link in your browser:\n%s\n", $authUrl);
    printf('Enter verification code: ');
    $authCode = trim(fgets(STDIN));
    
  2. 在任意浏览器打开生成的授权链接,完成授权后Google会直接显示一串授权码,无需跳转至外部站点
  3. 将授权码输入到服务器命令行,即可完成令牌获取流程

方法2:使用http://localhost(兼容默认行为)

  1. 省略手动设置重定向URI的代码,或显式设置为http://localhost:
    // 客户端会自动使用http://localhost,也可手动指定
    // $client->setRedirectUri('http://localhost');
    $authUrl = $client->createAuthUrl();
    printf("Open this link in your browser:\n%s\n", $authUrl);
    printf('Enter verification code: ');
    $authCode = trim(fgets(STDIN));
    
  2. 授权完成后,浏览器会跳转至http://localhost(可能显示“页面无法显示”),但地址栏中会包含code参数,提取该参数值即为授权码
  3. 将授权码输入服务器命令行即可

关于桌面凭证的重定向URI设置选项

  • 桌面客户端凭证不支持手动配置自定义重定向URI,这是Google OAuth的设计规则,因此控制台中不会显示该设置入口
  • 无需调整任何配置来显示该选项,该类型凭证仅允许使用预定义的两个URI

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 04:35:21