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

使用Google Plus登录网站后退出报错:Uncaught ReferenceError: signOut is not defined

解决Google Plus退出时signOut is not defined的错误

这个错误我之前也碰到过,本质是浏览器触发按钮点击事件时找不到你定义的signOut函数,大概率是函数作用域问题或者Google Auth2 API初始化顺序不对导致的,下面给你具体的修复方案:

1. 确保signOut函数在全局作用域可访问

如果你的signOut函数定义在某个局部闭包(比如DOMContentLoaded回调、API初始化的内部函数)里,浏览器的onclick事件是无法访问到它的。你需要把函数挂载到全局的window对象上,让按钮能直接调用。

2. 正确初始化Google Auth2 API

必须等Google Auth2 API完全加载并初始化完成后,再定义signOut函数,否则调用gapi.auth2.getAuthInstance()会出错。

完整的修正代码示例:

首先引入Google平台脚本:

<script src="https://apis.google.com/js/platform.js" async defer></script>

然后编写初始化和退出逻辑:

// 初始化Google Auth2
function initGoogleAuth() {
  gapi.load('auth2', function() {
    // 替换成你的Google OAuth客户端ID
    gapi.auth2.init({
      client_id: 'YOUR_GOOGLE_CLIENT_ID'
    }).then(function(auth2) {
      // 将signOut挂载到全局window对象,确保onclick能访问
      window.signOut = function() {
        auth2.signOut().then(function () {
          console.log('User signed out.');
          // 可选:退出后跳转或刷新页面
          // window.location.reload();
        });
      };
    });
  });
}

// 页面加载完成后执行初始化
document.addEventListener('DOMContentLoaded', initGoogleAuth);

最后修改退出按钮,加上return false阻止默认跳转行为:

<li id="google_plus"><a href="#" onclick="signOut(); return false;">Logouts</a></li>

额外检查项

  • 确认你已经替换了代码中的YOUR_GOOGLE_CLIENT_ID为实际的客户端ID
  • 检查platform.js脚本是否正确加载,没有被浏览器拦截
  • 不要把signOut函数放在任何局部作用域内(比如某个函数的内部),必须让它在全局可访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:35:26