Domanda

Sto usando OpenID per accedere l'utente. (Google considerazione solo). Ora ho un cartello fuori link nella mia pagina, che il clic, voglio all'utente di effettuare il login di account Google e la pagina per essere reindirizzato alla mia home page. questo può essere fatto ??

Modifica-
Cambiare la risposta accettata perché ora Google permette il reindirizzamento [continua] a qualsiasi dominio che si desidera.

È stato utile?

Soluzione

Ho risolto questo problema chiamare questa funzione quando l'utente clicca sul link di logout:

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

Quando l'utente clicca sul link, il browser reindirizzare l'utente alla pagina di logout e solo quando la disconnessione è completa, l'utente viene reindirizzato al sito " http://www.example.com ".

spero che questo può aiutare.

Altri suggerimenti

Le sfide

https://www.google.com/accounts/Logout registrerà la out utente. V'è un parametro continueUrl che Google aggiunge a quell'indirizzo a volte, ma sarà solo riuscirà a reindirizzare l'utente quando il bersaglio è qualche sito di Google, e non il proprio. Questo rende l'approccio inutilizzabile.

Inoltre la specifica OpenID non include registro globale fuori in questo momento.

C'è un altro modo:

Suggerimento

Includere un IFrame sulla tua pagina e utilizzare il gestore di eventi onClick JavaScript sul link di logout per caricare https: //www.google.com/accounts/Logout nel IFrame. Dopo di che (si potrebbe desiderare di controllare se l'IFrame caricato con successo), reindirizzare l'utente a una procedura di logout per il proprio sito. Dopo aver abbandonato lasciare che la pagina di reindirizzamento alla home page.

Il collegamento potrebbe apparire un po 'come questo:

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

È necessario implementare la funzione StartPollingForCompletion() di controllare periodicamente se la pagina di logout è stata caricata. uso setTimeout() in volta il sondaggio, e controllo per alcune proprietà sul IFrame (non so per certo quali funzioneranno, perché si sta lavorando cross-site qui).

vedi anche queste domande:

OpenID. Come si fa il logout

Come aggiungere funzionalità di disconnessione a un sito abilitato OpenID?

Ho cercato di fare lo stesso. Per Google Apps solo -
Per disconnettersi provare le seguenti due opzioni:
1) Utilizzo di 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) utilizzando 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>

Come ho passato un enorme quantità di tempo su questo google login / logout problema per la mia app (che è un server Nodo / MongoDB, utilizzando massicciamente Google Docs e API di Google Script), I dovuto condividere i miei risultati qui ..

L'unico buon modo per tutto il logout l'utente è quello di utilizzare questo:

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

Se si utilizza la soluzione ha dato al di sopra di Ira, che sta facendo un logout parziale sembra per la scheda corrente del browser. Il che significa che se l'utente chiude la scheda, e riaprire l'applicazione, sarà ancora connesso al precedente account.

ho dovuto usare una finestra esterna perché non ero in grado di reindirizzare correttamente per la mia applicazione dopo il logout da account di posta elettronica di Google. Questa soluzione funziona la maggior parte delle volte, se la larghezza di banda utente non è troppo lento, lasciando 3 secondi per la disconnessione viene fatto prima di chiudere il popup. Poi utente è tenuto a registrare con un altro account nella mia finestra principale dell'applicazione.

Ciò conferma la soluzione di Floccinaucinihilipilification e forse la soluzione iframe di cui sopra dovrebbe essere migliore della mia.

Ho appena avuto a che fare lo stesso, logout l'utente. in qualche modo la risposta accettata non lavoro per me, ho ottenuto un errore da parte di Google

The page you requested is invalid.

così ho finito per mettere questo nella mia pagina:

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

che registra con successo l'utente.

Ecco quello che faccio, non ricordo se ho fatto o trovato da qualche parte ... Funziona come un fascino ... a parte il fatto che si registra fuori fuori di tutti i siti di Google (che posso' t credere non forniscono un modo corretto per farlo, ma ci si va.)

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

Non so se la cosa che ho fatto era giusto. Ma sono riuscito a utilizzare il codice in questo modo:

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

Io uso questo codice per effettuare il logout dall'account Google. Si genera un errore, ma non preoccupatevi, sarà reindirizzato immediatamente dopo l'errore avviene direttamente alla propria applicazione lato server percorso signout.

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top