it-swarm.com.de

google-Konto abmelden und umleiten

Ich benutze openid, um den Benutzer anzumelden. (Nur Google-Konto). Nun habe ich einen Abmelde-Link auf meiner Seite. Wenn ich darauf klicke, möchte ich, dass der Benutzer von Google-Konten und der Seite abgemeldet wird um auf meine Homepage umgeleitet zu werden. kann das gemacht werden ??

Bearbeiten-
Ändern der akzeptierten Antwort, da Google jetzt die Weiterleitung zu jeder gewünschten Domäne zulässt. 

31
Shrinath

Ich habe dieses Problem beim Aufruf dieser Funktion gelöst, wenn der Benutzer auf den Abmelde-Link klickt:

var logout = function(){
document.location.href = "https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=http://www.example.com";
}

Wenn der Benutzer auf den Link klickt, leitet der Browser den Benutzer auf die Abmeldeseite um. Erst wenn die Abmeldung abgeschlossen ist, wird der Benutzer zur Site " http://www.example.com " umgeleitet.

Ich hoffe das kann helfen.

60
ira

Herausforderungen

Durch Anfordern von https://www.google.com/accounts/Logout wird der Benutzer abgemeldet. Es gibt einen Parameter continueUrl, den Google dieser Adresse manchmal hinzufügt. Der Benutzer kann jedoch nur dann umgeleitet werden, wenn das Ziel eine Google-Site ist und nicht Ihre eigene. Dies macht den Ansatz unbrauchbar. 

Außerdem enthält die OpenID-Spezifikation derzeit keine globale Abmeldung.

Es geht auch anders:

Vorschlag

Fügen Sie einen IFrame in Ihre Seite ein und verwenden Sie den onClick JavaScript-Ereignishandler für den Abmelde-Link, um https://www.google.com/accounts/Logout in den IFrame zu laden. Führen Sie anschließend den Benutzer zu einem Logout-Vorgang für Ihre eigene Site um (Sie möchten vielleicht überprüfen, ob der IFrame erfolgreich geladen wurde). Lassen Sie diese Seite nach dem Abmelden auf Ihre Startseite umleiten.

Der Link könnte ein bisschen so aussehen:

<a href="https://www.google.com/accounts/Logout"
    onclick="myIFrame.location='https://www.google.com/accounts/Logout';StartPollingForCompletion();return false;">
   log out</a>
<iframe id="myIFrame"></iframe>

Sie müssen die Funktion StartPollingForCompletion() implementieren, um in regelmäßigen Abständen zu prüfen, ob die Abmeldeseite geladen wurde. Verwenden Sie setTimeout(), um die Umfrage zu starten, und suchen Sie nach einer Eigenschaft im IFrame (ich weiß nicht genau, welche funktioniert, da Sie hier standortübergreifend arbeiten).

siehe auch diese Fragen: 

OpenID. Wie melden Sie sich ab

Hinzufügen einer Abmeldefunktion zu einer OpenID-fähigen Site?

19
Arjen Kruithof

Ich habe das gleiche versucht. Nur für Google Apps - 
Versuchen Sie zum Abmelden die folgenden zwei Optionen: 
1) Verwenden von i-frame - 

<iframe src="https://mail.google.com/a/YOURDOMAIN.IN/?logout&hl=en" width="100%" height="300">
  <p>Your browser does not support iframes.</p>
</iframe>

2) Javascript verwenden - 

<script type="text/javascript">
     window.open('https://mail.google.com/a/YOURDOMAIN.IN/?logout&hl=en','logout_from_google','width=600,height=300,menubar=no,status=no,location=no,toolbar=no,scrollbars=no,top=20,left=20');
</script>

Da ich ein enorme ZeitZeit für dieses Google-Anmelde-/Abmeldeproblem für meine App (dies ist ein Node/MongoDB-Server, der massiv Google Docs und Google Script-APIs verwendet) verbrachte, musste ich meine Ergebnisse hier veröffentlichen .. 

Die einzig gute Möglichkeit, den Benutzer vollständig abzumelden, ist die folgende Verwendung:

 var newWindow = window.open('https://mail.google.com/mail/?logout&hl=fr','Disconnect from Google','width=100,height=50,menubar=no,status=no,location=no,toolbar=no,scrollbars=no,top=200,left=200');
setTimeout(function(){
    if (newWindow) newWindow.close();
    window.location="auth/google";
},3000);

Wenn Sie die von ira angegebene Lösung verwenden, führt dies zu einer teilweisen Abmeldung des aktuellen Registers des Browsers. Das heißt, wenn der Benutzer die Registerkarte schließt und die Anwendung erneut öffnet, wird er weiterhin beim vorherigen Konto protokolliert.

Ich musste ein externes Fenster verwenden, da ich nach der Abmeldung vom E-Mail-Google-Konto nicht ordnungsgemäß zu meiner App umleiten konnte. Diese Lösung funktioniert in den meisten Fällen, wenn die Bandbreite des Benutzers nicht zu niedrig ist. Vor dem Schließen des Popup-Fensters müssen drei Sekunden für die Abmeldung verwendet werden. Dann muss sich der Benutzer mit einem anderen Konto in meiner Hauptfenster-App anmelden.

Dies bestätigt die Lösung der Floccinaucinihilipilifizierung und vielleicht sollte die oben angegebene Iframe-Lösung besser sein als meine.

1
Cédric NICOLAS

Ich musste nur das gleiche tun, den Benutzer abmelden. Irgendwie funktioniert die akzeptierte Antwort für mich nicht, ich habe einen Fehler von Google erhalten

The page you requested is invalid.

also habe ich das in meine Seite eingefügt:

<img src="https://www.google.com/accounts/Logout" />

die den Benutzer erfolgreich abmeldet. Quelle

0
balazs

Ich weiß nicht, ob das, was ich getan habe, richtig war. Aber ich habe es geschafft, Code so zu verwenden:

<a class="btn btn-default navbar-btn text-white" id="signOut" href="../home.html" onclick="signOut('https://www.google.com/accounts/Logout');">Sign out</a>
    <script>
      function signOut() {
        var auth2 = gapi.auth2.getAuthInstance();
        auth2.signOut().then(function () {
          console.log('User signed out.');
        });
      }
      firebase.auth().signOut().then(function() {
        // Sign-out successful.
        alert('You have Signed Out. Please Sign In');
      }).catch(function(error) {
        // An error happened.
        alert('An error happened');
      });
    </script>
0
Endi hariadi

Ich benutze diesen Code, um mich vom Google-Konto abzumelden. Es wird einen Fehler auslösen, aber keine Sorge, es wird sofort umgeleitet, nachdem der Fehler direkt auf der Seite des Anwendungsservers abgemeldet wurde.

<a href="https://www.google.com/accounts/Logout" target="myiframe">logout</a>
<iframe name="myiframe" style="display:none" onload="redirect()"></iframe>

<script>
  function redirect() {
    window.location = 'http://your.site.com/signout';
  };
</script>
0
yohanes

Hier ist was ich tue, erinnere mich nicht, ob ich es gefunden oder irgendwo gefunden habe ... Es wirkt wie ein Zauber ... abgesehen von der Tatsache, dass es dich von allen Google-Sites abmeldet (ich kann es nicht glauben.) Stellen Sie keinen richtigen Weg dafür bereit, aber Sie gehen dorthin.)

<script>
function makeFrame(domId,url) { 
    ifrm = document.createElement("IFRAME"); 
    ifrm.setAttribute("src", url);
    ifrm.setAttribute("id", domId);
    ifrm.setAttribute("style", "display:none;");         
    ifrm.style.width = 1+"px"; 
    ifrm.style.height = 1+"px"; 
    document.body.appendChild(ifrm); 
} 

function logOutGoogle(){
    makeFrame('googleLogoutIFrame','https://www.google.com/accounts/Logout');
}
$(window).ready(function() {
    logOutGoogle();
});
</script>
0