Frage

Ich bin mit openid in die Benutzer anmelden. (Google-Konto nur). Jetzt habe ich ein Zeichen aus Link in meiner Seite, die auf Klick, ich mag der Benutzer angemeldet sein, aus Google-Konten und die Seite auf meine Homepage umgeleitet werden. kann dies geschehen ??

Bearbeiten-
Ändern der akzeptierte Antwort, weil jetzt erlaubt das Umleiten Google [weiterhin] auf jede Domain, die Sie wollen.

War es hilfreich?

Lösung

ich dieses Problem gelöst haben Aufruf dieser Funktion, wenn der Benutzer klicken Sie auf den Logout-Link:

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 dem Link, der Browser die Benutzer auf Logout-Seite umleiten und nur, wenn die Abmeldung abgeschlossen ist, wird der Benutzer auf die Website umgeleitet „ http://www.example.com ".

Ich hoffe, diese helfen können.

Andere Tipps

Herausforderungen

https://www.google.com/accounts/Logout wird der log Benutzer aus. Es gibt einen continueUrl Parameter, dass Google manchmal an diese Adresse hinzufügt, aber es wird nur dann gelingen, den Benutzer umgeleitet werden, wenn das Ziel einige Google-Website, und nicht Ihre eigene. Dies macht den Ansatz unbrauchbar.

Darüber hinaus die OpenID-Spezifikation umfasst nicht global log in diesem Moment aus.

Es gibt eine andere Art und Weise:

Vorschlag

Fügen Sie einen IFrame auf Ihrer Seite und verwenden Sie die onClick JavaScript-Event-Handler auf dem Logout-Link https zu laden: //www.google.com/accounts/Logout in den IFrame. Danach (möchten Sie vielleicht, ob das IFrame erfolgreich überprüfen geladen), den Benutzer auf eine Abmeldeprozedur für Ihre eigene Website umleiten. Nach dem Abmelden der Seite Umleitung auf Ihre Homepage lassen.

Die Verbindung könnte ein bisschen wie folgt 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 StartPollingForCompletion() Funktion implementieren, in regelmäßigen Abständen zu überprüfen, ob die Logout-Seite geladen wird. Verwendung setTimeout() zu Zeit die Umfrage, und die Prüfung für eine Eigenschaft auf der IFrame (ich weiß nicht genau, was diejenigen funktionieren wird, weil Sie gerade arbeiten Cross-Site-hier).

siehe auch diese Fragen:

OpenID. Wie wollen Sie logout

Wie Logout-Funktion zu einer OpenID aktivierten Seite hinzufügen?

Ich habe versucht, das gleiche zu tun. Für Google Apps nur -
Um Abmelde versuchen Sie die folgenden zwei Möglichkeiten:
1) Unter Verwendung 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) mit Hilfe von JavaScript -

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

Wie ich habe ein verbrauchtes großen Menge Zeit auf dieser Google-Login / Logout-Ausgabe für meine app (die ein Node / MongoDB-Server, mit massiv Google Text & Tabellen und Google Script APIs), I musste meine Ergebnisse hier teilen ..

Die einzige gute Möglichkeit, um vollständig Abmelde den Benutzer ist diese zu verwenden:

 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 Lösung verwenden gab oben von ira, es ist ein Teil-Logout tut es für den aktuellen Tab des Browsers erscheint. Was bedeutet, dass, wenn der Benutzer nahe dem Registerkarte und die Anwendung wieder öffnen, wird er noch mit dem vorherigen Konto angemeldet sein.

Ich hatte ein externes Fenster zu verwenden, weil ich nicht in der Lage war richtig nach dem Abmelden meiner App von E-Mail Google-Konto zu umleiten. Diese Lösung funktioniert die meiste Zeit, wenn der Benutzer die Bandbreite nicht zu langsam ist, lassen 3 Sekunden zum Logout vor dem Schließen des Pop-up getan. Dann Benutzer muss mit einem anderen Konto in meinem Hauptfenster App loggt sein.

Dies bestätigt die Lösung von Floccinaucinihilipilification und vielleicht die Iframe-Lösung oben sollte besser gegeben sein als meine.

Ich habe gerade das gleiche zu tun, logout den Benutzer. irgendwie die akzeptierte Antwort für mich nicht funktioniert, ich habe einen Fehler von Google

The page you requested is invalid.

so endete ich dies in meiner Seite nach oben setzen:

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

, die erfolgreich den Benutzer abmeldet. Quelle

Hier ist, was ich tue, nicht erinnern, ob ich es wieder gut gemacht oder es irgendwo gefunden ... Es funktioniert wie ein Charme ... anders als die Tatsache, dass es Sie abmeldet aus allen Google-Websites (I can‘ t glaubt, dass sie keinen richtigen Weg, um es zu tun, aber es Sie gehen.)

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

Ich weiß nicht, ob das, was ich tat, war richtig. Aber ich zu verwenden Code wie folgt verwaltet:

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

verwende ich diesen Code von Google-Konto abzumelden. Es wirft einen Fehler, aber keine Sorge, es wird sofort umgeleitet werden, nachdem der Fehler aufgetreten ist direkt auf dem Anwendungsserver-Seite signout Route führt.

<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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top