Panoramica di OAuth: l'utente è chi dice di essere ?:
Non sono sicuro che tu abbia utilizzato OAuth per accedere a Stack Overflow, come l'opzione "Accedi con Google", ma quando utilizzi questa funzione, Stack Overflow chiede semplicemente a Google se sa chi sei:
"Yo Google, questo tizio di Vinesh afferma che vinesh.e@gmail.com è lui, è vero?"
Se hai già effettuato l'accesso, Google dirà SÌ. In caso contrario, Google dirà:
"Aspetta un secondo Stack Overflow, autenticherò questo tizio e se può inserire la password giusta per il suo account Google, allora è lui".
Quando inserisci la tua password Google, Google dice a Stack Overflow che sei chi dici di essere e Stack Overflow ti accede.
Quando esci dalla tua app, esci dalla tua app:
È qui che gli sviluppatori nuovi di OAuth a volte si confondono un po '... Google e Stack Overflow, Assembla, Vinesh's-very-cool-slick-webapp, sono tutte entità diverse e Google non sa nulla del tuo account sulla fantastica webapp di Vinesh e vice viceversa, a parte ciò che viene esposto tramite l'API che stai utilizzando per accedere alle informazioni del profilo.
Quando il tuo utente si disconnette, non si disconnette da Google, si disconnette dalla tua app, da Stack Overflow o da Assembla o da qualsiasi applicazione web che abbia utilizzato Google OAuth per autenticare l'utente.
In effetti, posso disconnettermi da tutti i miei account Google ed essere ancora connesso a Stack Overflow. Una volta che la tua app sa chi è l'utente, quella persona può disconnettersi da Google. Google non è più necessario.
Detto questo, quello che stai chiedendo di fare è disconnettere l'utente da un servizio che in realtà non ti appartiene. Pensaci in questo modo: come utente, quanto pensi che sarei infastidito se avessi effettuato l'accesso a 5 diversi servizi con il mio account Google, quindi la prima volta che mi sono disconnesso da uno di essi, devo accedere al mio account Gmail ancora perché quello sviluppatore di app ha deciso che, quando esco dalla sua applicazione, dovrei essere disconnesso anche da Google? Diventerà vecchio molto velocemente. In breve, davvero non vuoi farlo ...
Sì, sì, qualunque cosa, voglio ancora disconnettere l'utente da Google, dimmi solo come faccio?
Detto questo, se desideri ancora disconnettere un utente da Google e ti rendi conto che potresti benissimo interrompere il suo flusso di lavoro, potresti creare dinamicamente l'URL di logout da uno dei loro pulsanti di logout dei servizi Google e quindi richiamarlo utilizzando un elemento img o un tag 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";
Se reindirizzi il tuo utente alla pagina di disconnessione o lo richiami da un elemento che non è limitato a più domini, l'utente verrà disconnesso da Google.
Tieni presente che questo non significa necessariamente che l'utente verrà disconnesso dalla tua applicazione, ma solo da Google. :)
Sommario:
Ciò che è importante tenere a mente è che, quando esci dalla tua app, non è necessario che l'utente reinserisca una password. Questo è il punto! Si autentica su Google in modo che l'utente non debba inserire la propria password più e più volte in ogni applicazione web che utilizza. Ci vuole un po 'per abituarsi, ma sappi che, finché l'utente è connesso a Google, la tua app non deve preoccuparsi se l'utente è o meno chi dice di essere.
Ho la stessa implementazione in un progetto che hai tu, utilizzando le informazioni del profilo Google con OAuth. Ho provato la stessa cosa che stai cercando di provare, e ha davvero iniziato a far arrabbiare le persone quando hanno dovuto accedere a Google più e più volte, quindi abbiamo smesso di disconnetterle da Google. :)