2015-04-17 13 views
5

Próbuję umieścić przycisk logowania Google+ w mojej witrynie. Przycisk działa idealnie. Mam również przycisk Wyloguj. I ukryć znak w przycisk, gdy użytkownik loguje kod in.My jest tutaj:Wylogowanie z Google+ przy użyciu JS

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

Problemem jest to, kiedy używam gapi.auth.signOut(), aby wylogować się ... loguje mnie, ale dzienniki w tym samym użytkowniku ponownie do Google+ po odświeżeniu. Jak zezwolić innym osobom na logowanie się do mojej witryny. Jak całkowicie wylogować ludzi z Google. Jestem nowy w JavaScript ... przykład pomoże.

+0

Czy wywołujesz funkcję logowania przy ładowaniu strony? –

+0

Nie, tylko gdy kliknięto przycisk signin .. po kliknięciu przycisku ... pojawia się okno dialogowe i znika ... oznacza to, że poprzedni użytkownik był zalogowany. –

+0

Moje pierwsze pytanie brzmi: czy zamierzasz zrobić wprowadzić serwer proxy służący do logowania się i wylogowywania z Google + lub czy zamierzasz używać Google + jako sposobu autoryzacji tworzenia konta w celu uzyskania dostępu do Twojej witryny? Gdybym poszedł na someSite.com i zalogował się za pomocą Google +, a następnie wylogował się z tej strony, nie spodziewałbym się, że wyloguję się z mojego konta Google +. Może się zdarzyć, że Google wymusza regułę w taki sposób, że witryny stron trzecich nie mogą logować użytkowników poza domenę Google +. –

Odpowiedz

2

Odpowiedź jak zorientowali się, jest prosty. Przy pierwszym logowaniu użytkownik nie jest zalogowany do mojej witryny. Najwyraźniej użytkownik musi się zalogować. Następnym razem, gdy strona się odświeży ... Google+ sprawdza, czy użytkownik jest już zalogowany w którejś z usług Google, takich jak Gmail itd. I utrzymuje użytkownika zalogowanego, jeśli odpowiedź jest prawdziwa. Aby sprawdzić, czy to działa ... wyloguj się z dowolnej usługi Google (Gmail itp.) I spróbuj zalogować się w Google+. Poprosi o dane uwierzytelniające. Gdy użytkownik zaloguje się w Google+, nie musi logować się za każdym razem.

0

Ta odpowiedź jest raczej żartem, ale dlaczego nie spróbujesz hackowej metody wylogowania użytkownika ze swojego konta Google przez dodanie ukrytego elementu iframe do treści z numerem src z https://accounts.google.com/Logout?

Odmówi wyświetlania z powodu opcji X-Frame-Options ustawionej na DENY, ale faktycznie wyloguje.

One-liner z jQuery:

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

Nie zaleca się polegać na hackowatym efekcie ubocznym. Może to przerwać pracę w dowolnym momencie, pozostawiając uszkodzone witryny. – abraham

+0

Oczywiście, że nie. Wymienił to jako żart, a nie jako rozwiązanie. PO powinien znać wszystkie swoje opcje. Nie tylko te właściwe;) –

Powiązane problemy