2015-04-17 49 views
5

我正在嘗試在我的網站上放置Google+登錄按鈕。該按鈕完美工作。我也有一個退出按鈕。我躲在按鈕符號在用戶登錄時in.My代碼是在這裏:使用JS退出Google+登錄

<span id="signinButton"> 
    <span 
     class="g-signin" 
     data-callback="signinCallback" 
     data-clientid="******************" 
     data-cookiepolicy="single_host_origin" 
     data-requestvisibleactions="http://schema.org/AddAction" 
     data-scope="https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email"> 
    </span> 
</span> &nbsp;&nbsp;&nbsp;&nbsp; 
<button id="revokeButton" onclick="gapi.auth.signOut()">Sign Out</button> 

<script> 
    function signinCallback(authResult) { 
     if (authResult['status']['signed_in']) { 
      document.getElementById('signinButton').setAttribute('style', 'display: none'); 
      console.log("User successfully logged in!!"); 
     } else { 
      console.log('Sign-in state: ' + authResult['error']); 
     } 
    } 
</script> 
<script> 
    function disconnectUser(access_token) { 
     var revokeUrl = 'https://accounts.google.com/o/oauth2/revoke?token=' + 
       access_token; 

     // Perform an asynchronous GET request. 
     $.ajax({ 
      type: 'GET', 
      url: revokeUrl, 
      async: false, 
      contentType: "application/json", 
      dataType: 'jsonp', 
      success: function(nullResponse) { 
       document.getElementById('signinButton').setAttribute('style', 'display: display'); 
       // The response is always undefined. 
       console.log("Success in logging out!"); 
      }, 
      error: function(e) { 
       // Handle the error 
       console.log(e); 
       // You could point users to manually disconnect if unsuccessful 
       // https://plus.google.com/apps 
      } 
     }); 
    } 
</script> 

問題是,當我使用gapi.auth.signOut()退出......它記錄我出去,但日誌在同一個用戶再次刷新Google+。我如何讓其他人登錄我的網站。我如何從Google完全註銷用戶?我是Javascript的新手......一個例子會有所幫助。

+0

您是否在頁面加載時調用登錄功能? –

+0

沒有..只有當signinButton被點擊時......當我點擊按鈕時......一個對話框出現並消失......這意味着前一個用戶已登錄。 –

+0

我的第一個問題是:你是否打算讓你的網站代理用戶登錄和退出谷歌+,或者你打算使用谷歌+作爲授權創建帳戶訪問您的網站的方式嗎?如果我去了某個網站,並使用Google +登錄,然後退出該網站,我不希望實際上被註銷掉我的Google +帳戶。谷歌可能正在執行一項規則,以便第三方網站無法將用戶從Google +註銷。 –

回答

2

答案,我想通了,很簡單。用戶第一次登錄時,他沒有登錄我的網站。顯然,用戶必須登錄。下次頁面刷新時,Google+會檢查用戶是否已登錄到任何Google服務(如gmail等),並在答案爲真時保持用戶登錄。要檢查此功能是否有效......請退出任何Google服務(Gmail等)並嘗試使用Google+登錄。它會要求憑證。所以一旦用戶登錄到Google+,他/她不需要每次都登錄。

0

這個答案更多的是一個笑話,但你爲什麼不嘗試通過添加隱藏的iframe到身體與srchttps://accounts.google.com/Logout從他的谷歌帳戶註銷用戶的黑客方法?

它會拒絕顯示,因爲X-Frame-Options設置爲DENY,但實際上會將您註銷。

一襯墊使用jQuery:

$('<iframe style="display: none" src="https://accounts.google.com/Logout"></iframe>').appendTo(document.body); 
+0

不建議依靠哈克的副作用。這可能會在任何時候停止工作,使離開它的網站破裂。 – abraham

+0

當然不是。提起它只是一個笑話,不是解決方案。 OP應該知道他所有的選擇。不只是正確的;) –