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

Google GSI Client登录后无法跳转至落地页问题求助

谷歌GSI登录后无法跳转至落地页的排查思路

核心问题定位

当前代码存在模式冲突,这是跳转失败的主要原因:同时配置了data-ux_mode="redirect"(重定向模式)和data-callback="onSignIn"(前端回调模式),两种模式互斥,谷歌GSI只会执行其中一种逻辑,直接导致前端AJAX代码完全未触发。

具体排查与修复步骤

  • 模式二选一,消除冲突

    • 若选前端回调模式:删除data-ux_mode="redirect"和data-login_uri配置,保留data-callback="onSignIn"。此时GSI会在用户登录后触发onSignIn函数,执行AJAX逻辑。
    • 若选后端重定向模式:删除data-callback="onSignIn"配置,保留data-ux_mode="redirect"和data-login_uri。此时谷歌会直接将用户重定向到handle_google_signin.php,注意重定向是GET请求,需修改PHP代码适配GET参数,且必须验证谷歌返回的id_token(不能直接信任前端传参)。
  • 修复PHP会话问题
    代码使用$_SESSION但未启动会话,必须在handle_google_signin.php开头添加:

    session_start();
    

    同时确保connect.php中无重复或遗漏该语句。

  • 验证AJAX依赖
    若选前端回调模式,检查页面是否正确引入jQuery($.ajax依赖jQuery),未引入则添加:

    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
    
  • 修复SQL注入风险与查询逻辑
    直接拼接$email到SQL语句存在注入风险,改用预处理语句:

    $query = "SELECT * FROM tblAccount WHERE email = ?";
    $stmt = mysqli_prepare($con, $query);
    mysqli_stmt_bind_param($stmt, "s", $email);
    mysqli_stmt_execute($stmt);
    $result = mysqli_stmt_get_result($stmt);
    
  • 调试日志排查

    • 查看浏览器控制台:检查是否有JS报错(如jQuery未加载、回调函数未触发)。
    • 查看PHP错误日志:确认是否存在数据库连接失败、SQL执行错误等问题,已添加的error_log语句可帮你确认是否收到正确的邮箱参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:42:32