ТипError: gapi.auth2 undefined

Я пошел точно по инструкциям для интеграции входа google:

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>

Почему это не работает?

Ответы

Ответ 1

Используются ли signIn и signOut на одной странице? Div g-signin2 загружает и inits 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>