Pregunta

Estoy usando OpenID para iniciar la sesión del usuario en. (Google cuenta solamente). Ahora tengo un letrero enlace en mi página, que al hacer clic, quiero que el usuario pueda iniciar sesión de cuentas de Google y la página a ser redirigido a mi página de inicio. se puede hacer esto ??

Editar-
Cambio de la respuesta aceptada porque ahora Google permite redirigir [continuar] a cualquier dominio que desea.

¿Fue útil?

Solución

Me han resuelto este problema llamar a esta función cuando el usuario haga clic en el enlace de desconexión:

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

Cuando el usuario haga clic en el enlace, el navegador redirigir al usuario a la página de cierre de sesión y sólo cuando el cierre de sesión se ha completado, el usuario es redirigido al sitio " http://www.example.com ".

espero que esto puede ayudar.

Otros consejos

Desafíos

https://www.google.com/accounts/Logout registrará el cabo de usuario. Existe un parámetro continueUrl que Google se suma a la dirección de veces, pero sólo tendrá éxito para redirigir al usuario cuando el objetivo es algún sitio de Google, y no el suyo propio. Esto hace que el enfoque inutilizable.

Además de la especificación OpenID no incluye registro mundial a cabo en este momento.

Hay otra manera:

Sugerencia:

Incluir un IFrame en su página y utilice el controlador de eventos onClick JavaScript en el enlace de desconexión para cargar https: //www.google.com/accounts/Logout en el marco flotante. Después de eso (es posible que desee comprobar si el marco flotante cargado con éxito), redirigir al usuario a un procedimiento de cierre de sesión para su propio sitio. Después de salir de la sesión que dejar que la página de redirección a la página principal.

El enlace puede parecer un poco como esto:

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

que necesita para implementar la función StartPollingForCompletion() para comprobar periódicamente si la página de cierre de sesión se ha cargado. uso setTimeout() en cuando la encuesta, y el cheque por alguna propiedad en el marco flotante (no sé a ciencia cierta cuáles van a trabajar, debido a que está trabajando en varios sitios web aquí).

véase también estas preguntas:

OpenID. ¿Cómo cerrar la sesión

Cómo agregar función de cierre de sesión a un sitio de OpenID habilitado?

he estado tratando de hacer lo mismo. Google Apps única -
Para cerrar la sesión probar las dos opciones siguientes:
1) El uso de i-marco -

<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) El uso de 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>

Como he pasado enorme cantidad de tiempo en este Google de conexión / desconexión problema para mi aplicación (que es un servidor de nodo / MongoDB, utilizando masivamente Google Docs y Google Script API), I tuvo que compartir mis resultados aquí ..

La única buena manera de cerrar la sesión por completo el usuario es utilizar esto:

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

Si utiliza la solución dio por encima de Ira, que está haciendo un cierre de sesión parcial parece a la ficha actual del navegador. Lo que significa que si el usuario cerrar la pestaña, y volver a abrir la aplicación, será todavía registra en la cuenta anterior.

he tenido que utilizar una ventana externa porque no era capaz de redirigir correctamente a mi aplicación después del cierre de sesión de la cuenta de correo electrónico de Google. Esta solución funciona la mayoría de los casos, si el ancho de banda del usuario no es demasiado lento, dejando 3 segundos para el cierre de sesión que se realiza antes de cerrar la ventana emergente. A continuación, se requiere usuario para iniciar sesión con otra cuenta en mi aplicación de la ventana principal.

Esto confirma la solución de Floccinaucinihilipilification y tal vez la solución de marco flotante dado anteriormente debe ser mejor que la mía.

Yo sólo tenía que hacer lo mismo, cierre de sesión del usuario. de alguna manera la respuesta aceptada no trabajo para mí, me dio un error de Google

The page you requested is invalid.

así que acabó poniendo esto en mi página:

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

que registra con éxito el usuario.

Esto es lo que hago, no recuerdo si lo hice o encontré en alguna parte ... Funciona como un encanto ... aparte del hecho de que se cierra la conexión de todos los sitios de Google (lo que pueda' t creen que no proporcionan una manera correcta de hacerlo, pero hay que ir.)

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

No sé si lo hice fue correcto. Pero logré utilice el código siguiente:

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

Yo uso este código para cerrar la sesión de la cuenta de Google. Se generará un error, pero no se preocupe, será redirigido inmediatamente después de que el error tiene lugar directamente a su aplicación signout ruta del lado del servidor.

<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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top