HTML PHP google登录单点登录将抛出"无法读取未定义的属性'getAuthInstance'"

man*_*u g 18 html javascript php single-sign-on

我已按照https://developers.google.com/identity/sign-in/web/sign-in中提到的步骤创建了Google单点登录

登录工作就像一个魅力,但当我尝试按照链接中的文章整合注销

我在控制台中收到以下javascript错误

未捕获的TypeError:无法读取未定义的属性"getAuthInstance"

我的注销功能看起来像

<script>
    function signOut() {
       var auth2 = gapi.auth2.getAuthInstance();
       auth2.signOut().then(function () {
          console.log('User signed out.');
       });
    }
</script>
Run Code Online (Sandbox Code Playgroud)

我的签到看起来像

function onSignIn(googleUser) {

    var profile = googleUser.getBasicProfile();
    console.log('ID: ' + profile.getId()); 
    console.log('Name: ' + profile.getName());
    console.log('Image URL: ' + profile.getImageUrl());
    console.log('Email: ' + profile.getEmail());

}
Run Code Online (Sandbox Code Playgroud)

Jar*_*łka 32

signIn和signOut是否在同一页面上使用?Div g-signin2加载并插入gapi.auth2,因此只要它们在同一页面上就可以工作.

如果signOut位于单独的页面上,则应手动加载并初始化gapi.auth2库.

完整示例(您必须将YOUR_CLIENT_ID替换为您的实际client_id):

<html>
<head>
   <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
</head>
<body>
  <script>
    function signOut() {
      var auth2 = gapi.auth2.getAuthInstance();
      auth2.signOut().then(function () {
        console.log('User signed out.');
      });
    }

    function onLoad() {
      gapi.load('auth2', function() {
        gapi.auth2.init();
      });
    }
  </script>
  <a href="#" onclick="signOut();">Sign out</a>

  <script src="https://apis.google.com/js/platform.js?onload=onLoad" async defer></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢先生,现在我能解决这个问题.把我的注销逻辑放在`gapi.auth2.init().然后(()=> {/*注销这里的东西*/}) (4认同)