secret google javascript api oauth-2.0

javascript - secret - oauth2 google web service



¿Cómo puedo desconectarme de una aplicación donde utilicé OAuth2 para iniciar sesión con Google? (6)

Descripción general de OAuth: ¿El usuario que dice es él / ella es ?:

No estoy seguro de si usó OAuth para iniciar sesión en Stack Overflow, como la opción "Iniciar sesión con Google", pero cuando usa esta función, Stack Overflow simplemente le pregunta a Google si sabe quién es usted:

"Yo Google, este chico Vinesh afirma que [email protected] es él, ¿es cierto?"

Si ya ha iniciado sesión, Google dirá SÍ. Si no, Google dirá:

"Espera un segundo Stack Overflow, autenticaré a este amigo y si él puede ingresar la contraseña correcta para su cuenta de Google, entonces es él".

Cuando ingresa su contraseña de Google, Google le dice a Stack Overflow que usted es quien dice ser y Stack Overflow lo registra.

Cuando sales de tu aplicación, sales de tu aplicación:

Aquí es donde los desarrolladores nuevos en OAuth a veces se confunden un poco ... Google y Stack Overflow, Assembla, Vinesh''s-very-cool-slick-webapp, son entidades diferentes, y Google no sabe nada sobre su cuenta en la aplicación inteligente de Vinesh, y viceversa al revés, aparte de lo que está expuesto a través de la API que está utilizando para acceder a la información del perfil.

Cuando su usuario cierra la sesión, no está saliendo de Google, está cerrando sesión en su aplicación, Stack Overflow o Assembla, o la aplicación web que utiliza Google OAuth para autenticar al usuario.

De hecho, puedo cerrar la sesión de todas mis cuentas de Google y todavía iniciar sesión en Stack Overflow. Una vez que su aplicación sabe quién es el usuario, esa persona puede cerrar sesión en Google. Google ya no es necesario.

Dicho esto, lo que está pidiendo hacer es desconectar al usuario de un servicio que realmente no le pertenece. Piénselo de esta manera: como usuario, cuán molesto crees que estaría si me conecté a 5 servicios diferentes con mi cuenta de Google, entonces la primera vez que me desconecté de uno de ellos, tengo que iniciar sesión en mi cuenta de Gmail de nuevo porque el desarrollador de la aplicación decidió que, cuando cerré la sesión de su aplicación, ¿también debería haber cerrado sesión en Google? Eso se va a poner muy rápido. En resumen, realmente no quieres hacer esto ...

Yeh yeh, lo que sea, aún quiero desconectar al usuario de Google, solo dime ¿cómo hago esto?

Dicho esto, si aún desea desconectar a un usuario de Google y darse cuenta de que puede estar interrumpiendo su flujo de trabajo, puede construir dinámicamente la url de cierre de sesión desde uno de sus servicios de Google, y luego invocarlo usando un elemento img o una etiqueta de script:

<script type="text/javascript" src="https://mail.google.com/mail/u/0/?logout&hl=en" />

O

<img src="https://mail.google.com/mail/u/0/?logout&hl=en" />

O

window.location = "https://mail.google.com/mail/u/0/?logout&hl=en";

Si redirige a su usuario a la página de cierre de sesión o lo invoca desde un elemento que no está restringido por dominios cruzados, el usuario cerrará sesión en Google.

Tenga en cuenta que esto no significa necesariamente que el usuario cerrará sesión en su aplicación, solo Google. :)

Resumen:

Lo que es importante que tenga en cuenta es que, cuando cierre la sesión de su aplicación, no necesita hacer que el usuario vuelva a ingresar una contraseña. ¡Ese es todo el punto! Se autentica contra Google, por lo que el usuario no tiene que ingresar su contraseña una y otra vez en cada aplicación web que utiliza. Le lleva un tiempo acostumbrarse, pero sepa que, siempre que el usuario inicie sesión en Google, su aplicación no necesita preocuparse de si el usuario es o no quién dice que es.

Tengo la misma implementación en un proyecto que tú, usando la información del perfil de Google con OAuth. Probé lo mismo que intentaba probar, y realmente comenzó a enojar a las personas cuando tenían que iniciar sesión en Google una y otra vez, por lo que dejamos de cerrar sesión en Google. :)

En mi aplicación, implementé Google Signout usando jsapi.

Usé la URL https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=xxxxxx para conectarme a Google y luego https://www.googleapis.com/plus/v1/people/xxxxxx para obtener datos del usuario del perfil de google

Ahora necesito cerrar la sesión del usuario de Google mientras hago clic en un botón de mi aplicación. ¿Cómo puedo implementar esto en JavaScript, o al menos debe consultar la página de inicio de sesión de Google cada vez que el usuario inicia sesión?

He intentado approval_prompt=force , pero parece que no funciona.


Espero que podamos lograr esto al guardar el token en sesión al iniciar sesión y acceder al token cuando hizo clic en cerrar sesión.

String _accessToken=(String)session.getAttribute("ACCESS_TOKEN"); if(_accessToken!=null) { StringBuffer path=httpRequest.getRequestURL(); reDirectPage="https://www.google.com/accounts/Logout? continue=https://appengine.google.com/_ah/logout? continue="+path; } response.sendRedirect(reDirectPage);



Para mí, funciona (java - android)

void RevokeAcess() { try{ HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost("https://accounts.google.com/o/oauth2/revoke?token="+ACCESS_TOKEN); org.apache.http.HttpResponse response = client.execute(post); } catch(IOException e) { } CookieManager.getInstance().removeAllCookie(); // this is clear the cookies which tends to same user in android web view }

Tienes que llamar a esta función en AsyncTask en Android


Puede cerrar sesión y redirigir a su sitio:

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