web-dev-qa-db-ja.com

TypeError: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未定義

指示に従って、Googleプラットフォームライブラリを含めます。

    <script type='text/javascript' src='https://apis.google.com/js/platform.js' async defer></script>

なぜ機能しないのですか?

25

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>
57