2017-03-19 7 views
0

ウェブサイトにGoogle Sign-Inを実装しようとしていますが、ユーザーをログアウトしたままにしておくのに苦労しています。私はログインページにユーザーを戻す前に、サインアウトプロセス(それは様々なセッションの詳細を設定解除する)を処理するために別のページを使用しています。問題は、それらのログインページにヒットしたときに、Googleがログインページを表示してonSuccessステップにプッシュすることです。ログアウトしてもGoogleに再サインする

<!doctype html> 
<html> 
<head> 

    <!-- jQuery --> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 

    <meta name="google-signin-client_id" content="[clientIDstuffHere].apps.googleusercontent.com"> 

</head> 
<body class="loginPage"> 

    <div id="loginBox"> 

     <?php if(isset($_GET['error'])) { ?> 

      <p class="loginError"><?php echo $_GET['error'] ?></p> 

     <?php } ?> 

     <div id="googleSignIn"></div> 

    </div> 

    <script> 

    function onSuccess(googleUser) { 
     var id_token = googleUser.getAuthResponse().id_token; 
     window.location.href = "auth.php?id_token=" + id_token; 
    } 

    function onFailure(error) { 
     console.log(error); 
    } 

    function renderButton() { 
     gapi.signin2.render('googleSignIn', { 
      'scope': 'profile email', 
      'width': 240, 
      'height': 50, 
      'longtitle': true, 
      'theme': 'dark', 
      'onsuccess': onSuccess, 
      'onfailure': onFailure 
     }); 
    } 

    </script> 

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

</body> 
</html> 

とログアウトページ::私が間違って何をやってる

<?php 

session_start(); 
session_unset(); 
session_destroy(); 

?> 
<!doctype html> 
<html> 
<head> 

    <!-- jQuery --> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 

    <meta name="google-signin-client_id" content="[clientIDstuffHere].apps.googleusercontent.com"> 

</head> 
<body> 
<script> 

function loadAndExit() { 
    gapi.load('auth2', function() { 
    gapi.auth2.init().then(() => { 
     var auth2 = gapi.auth2.getAuthInstance(); 
     auth2.signOut(); 
     auth2.disconnect(); 
    }); 
    }); 
    window.location.href = "index.php"; 
} 

</script> 
<script src="https://apis.google.com/js/platform.js?onload=loadAndExit" async defer></script> 
</body> 
</html> 

任意のアイデアを

ここでは、ログインページがありますか?

+1

'window.location.href =「index.phpを」後に直接location = 'index.php';を置き、その後、私のコメントを読む;'それ以外の場合は、あなたの '.then'関数内で、あなたの最も深い非同期呼び出し、後に起こるべきコードが実行される前にページが変更されます。 – PHPglue

答えて

1

auth2.disconnect();

+0

はい、それと同じように 'location'を使うのはいいです。 – PHPglue

関連する問題