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

登录成功后出现错误重定向问题

问题排查与解决思路

针对你遇到的Google OAuth登录后跳转到myaccount.google.com而非指定回调地址的问题,即使未修改代码,可从以下方向逐一排查:

1. 核对Google Cloud控制台的重定向URI配置

  • 登录Google Cloud对应项目,进入APIs和服务 > 凭据,找到关联的OAuth客户端ID,检查已授权的重定向URI列表,确保代码生成的完整绝对URL(含HTTP/HTTPS协议、域名、路径,大小写完全一致)在列表内。
  • 常见异常:团队成员误改配置、协议不匹配(代码生成HTTPS但控制台是HTTP)、路径拼写错误。

2. 锁定Google Client库版本

  • 即便未修改自身代码,依赖的google/apiclient库可能通过Composer自动更新到新版本,部分版本的URI处理逻辑存在变动。
  • 操作:在composer.json中指定之前稳定运行的版本(例如"google/apiclient": "2.15.0",需根据历史记录调整),执行composer update google/apiclient后验证功能是否恢复。

3. 验证生成的重定向URI准确性

  • 在设置重定向URI后添加打印逻辑,确认实际生成的地址符合预期:
    $redirectUri = $this->router->generate('oauth2callback', [], UrlGeneratorInterface::ABSOLUTE_URL);
    var_dump($redirectUri); // 输出实际地址用于核对
    $client->setRedirectUri($redirectUri);
    
  • 可能因服务器配置变更(反向代理、域名调整),导致生成的URI为内部地址或错误域名,Google不识别时会跳转至默认页面。

4. 检查OAuth同意屏幕状态

  • Google可能调整了OAuth政策,未验证的应用或同意屏幕信息不全,会触发跳转限制。
  • 登录Google Cloud控制台查看OAuth同意屏幕状态,确认是否存在未处理的验证提示、警告,或组织内应用的权限设置变更。

5. 清理缓存

  • 服务器端缓存(框架缓存、OPcache)可能保留旧的授权URL,导致redirect_uri未更新;用户浏览器缓存的会话也可能引发异常。
  • 操作:清理服务器缓存,让用户使用无痕模式测试登录流程。

相关代码片段

$credentials_file = $parameterBag->get('google_credentials');

$client = new Google_Client();
$client->setAuthConfig($credentials_file);

$client->setAccessType("offline");
$client->setIncludeGrantedScopes(true);

$client->setRedirectUri( $this->router->generate('oauth2callback', [], UrlGeneratorInterface::ABSOLUTE_URL) );
$client->setScopes(self::SCOPES);
$client->setPrompt('select_account consent');
$client->setApprovalPrompt('auto');

$code = $request->get('code', null);

if ( !$code ) {
    $auth_url = $client->createAuthUrl();
    return $this->redirect($auth_url);
} else {
    //magic with logged user
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 21:36:29