2016-03-09 63 views
5

在谷歌的Integrate Google Sign-In頁它在底部將告訴您如何退出帳戶用戶使用Javascript部分:Google登錄API - 如何使用PHP登錄某人?

<a href="#" onclick="signOut();">Sign out</a> 
<script> 
    function signOut() { 
    var auth2 = gapi.auth2.getAuthInstance(); 
    auth2.signOut().then(function() { 
     console.log('User signed out.'); 
    }); 
    } 
</script> 

我一直在尋找,我不能找到一種方法,用戶退出像這使用PHP。

我確實發現如何完全從Google簽名用戶,但我不想那麼做。我也知道我可以刪除保存訪問代碼的$_SESSION變量,但這仍然不完全是我想要的。

有誰知道我如何使用PHP將某人從Google應用程序中註銷?

回答

1

這應該工作,我固定的標記問題Guinn的代碼,這是gapi.auth2.init();方法的任務沒有完成執行的事實。 .next()'它解決了這個問題。

<?php 
    session_start(); 
    session_unset(); 
    session_destroy(); 
?> 
<html> 
    <head> 
     <meta name="google-signin-client_id" content="YOUR_CLIENT_ID"> 
    </head> 
    <body> 
     <script src="https://apis.google.com/js/platform.js?onload=onLoadCallback" async defer></script> 
     <script> 
      window.onLoadCallback = function(){ 
       gapi.load('auth2', function() { 
        gapi.auth2.init().then(function(){ 
         var auth2 = gapi.auth2.getAuthInstance(); 
         auth2.signOut().then(function() { 
          document.location.href = 'login.php'; 
         }); 
        }); 
       }); 
      }; 
     </script> 
    </body> 
</html> 
0

JavaScript是處理與您的域不同的域名的唯一方式。

+0

那麼上面的腳本只是刪除cookie? – krummens

0

如果你打算在服務器端登錄auth2.signOut()check out this code(儘管它是python,你應該明白了)。

app.signOut = function() { 
    // Get `GoogleAuth` instance 
    var auth2 = gapi.auth2.getAuthInstance(); 
    // Sign-Out 
    fetch('/signout', { 
    method: 'POST', 
    credentials: 'include' 
    }).then(function(resp) { 
    if (resp.status === 200) { 
     auth2.signOut() 
     .then(changeProfile); 
    } else { 
     console.error("couldn't sign out"); 
    } 
    }).catch(function(error) { 
    console.error(error); 
    }); 
}; 

And this one

@app.route('/signout', methods=['POST']) 
def signout(): 
    # Terminate sessions 
    session.pop('id', None) 

    return make_response('', 200) 

這取決於你如何組織會議,但你可以signOut()之前發送Ajax請求到服務器。

0

檢查這一點,也會對你

header('Location:https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=http://www.domain.com'); 
+0

將用戶從谷歌中註銷。我不希望在控制檯中發生錯誤 – krummens

-1

你爲什麼不只是你的signout腳本是這個樣子:

<?php 
session_start(); 
session_unset(); 
session_destroy(); 
?> 
<html> 
    <head> 
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID"> 
    </head> 
    <body> 
    <script src="https://apis.google.com/js/platform.js?onload=onLoadCallback" async defer></script> 
    <script> 
     window.onLoadCallback = function(){ 
     gapi.load('auth2', function() { 
      gapi.auth2.init(); 
      var auth2 = gapi.auth2.getAuthInstance(); 
      auth2.signOut().then(function() { 
      document.location.href = 'login.php'; 
      }); 
     }); 
     }; 
    </script> 
    </body> 
</html> 
+0

:'ReferenceError:Can not find variable:gap' – krummens

+0

您是否正在加載google api?你是否嘗試過使用window.load或onready處理程序的建議? –

+0

是的,我正在加載谷歌API。 – krummens