2015-04-17 38 views
5

Sitemde bir Google+ giriş butonu koymaya çalışıyorum. Düğme mükemmel çalışıyor. Ayrıca bir Çıkış Çıkış butonum var. kullanıcı günlükleri in.My kodu burada olduğu zaman ben düğmesini işareti gizlemek:JS'yi kullanarak oturum kapatma

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

Sorun gapi.auth.signOut kullandığınızda() çıkış yapmanın ... Bu beni kaydeder, ancak günlükleri yenilemede aynı kullanıcıya tekrar Google + 'da. Diğer kişilerin siteme giriş yapmasına nasıl izin verebilirim. Google'dan insanları nasıl tamamen kapatabilirim? Javascript için yeniyim ... bir örnek yardımcı olur.

+0

Sayfa yüklemesinde signin işlevini mi çağırıyorsunuz? –

+0

Hayır, sadece signinButton tıklandığında ... düğmesine tıkladığımda ... bir diyalog belirir ve yok olur ... yani önceki kullanıcı oturum açmış demektir. –

+0

İlk sorum şu: Bunu yapmak niyetinde misiniz? Kullanıcıya google + 'dan giriş yapıp çıkması için bir proxy sitesi veya sitenize erişim için hesap oluşturmaya yetkilendirme yolu olarak google +' yu kullanmayı mı düşünüyorsunuz? SomeSite.com adresine gittim ve google + ile giriş yaptım ve o siteden çıkış yaptım, google + hesabımdan çıkış yapmamı beklemiyordum. Google, üçüncü taraf sitelerin kullanıcıları google + 'dan dışarı çıkaramayacakları bir kural uygulamaktadır. –

cevap

2

cevap anladım kadar basittir. Kullanıcı ilk kez oturum açtığında sitemde oturum açmadı. Açıkça kullanıcının giriş yapması gerekiyor. Sayfa bir dahaki sefere yenilenir ... Google+, kullanıcının gmail vb. Gibi Google hizmetlerinden herhangi birinde oturum açmış olup olmadığını kontrol eder ve yanıt doğruysa kullanıcıyı oturum açar. Bunun işe yarayıp yaramadığını kontrol etmek için Google hizmetinizden (gmail vb.) Çıkın ve Google + 'da giriş yapmayı deneyin. Kimlik bilgilerini soracaktır. Dolayısıyla, kullanıcı Google + 'da oturum açtığında, her seferinde imzalamaya devam etmesine gerek yoktur.

0

Bu yanıt şakadan başka bir şey değil, ama neden https://accounts.google.com/Logoutsrc ile vücuda gizli iframe ekleyerek kullanıcıyı Google hesabından çıkış yapma konusunda hacky yöntemini denemiyorsunuz?

X-Frame-Options'ın DENY olarak ayarlanmış olması nedeniyle görüntülenmesini reddeder, ancak aslında oturumunuzu kapatır. jquery ile

Tek astarı:

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

Bir hacky yan etkiye güvenmek tavsiye edilmez. Bu, herhangi bir zamanda bozulan siteleri terk ederek çalışmayı durdurabilir. – abraham

+0

Tabii ki değil. Bir şaka olarak bahsetti, çözüm olarak değil. OP tüm seçeneklerini bilmeli. Sadece doğru olanlar değil;) –

İlgili konular