TypeError:gapi.auth2 undefined

Ere*_*evi 27 google-openid

我完全遵循整合谷歌登录的说明:

https://developers.google.com/identity/sign-in/web/sign-in#specify_your_apps_client_id

登录有效,但注销会在行中出现javascript错误:

var auth2 = gapi.auth2.getAuthInstance();

错误是:

gapi.auth2 undefined

我按照说明添加了Google平台库:

    <script type='text/javascript' src='https://apis.google.com/js/platform.js' async defer></script>
Run Code Online (Sandbox Code Playgroud)

为什么不起作用?

Jar*_*łka 60

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.load"吗?它似乎不是参考资料的一部分:https://developers.google.com/identity/sign-in/web/reference (2认同)
  • FIY,假设由于某种原因,您在用户使用 Google Sign In 登录后重新加载页面,那么您需要手动加载并初始化gapi.auth2 库。 (2认同)