Sebbene l'API fornisca un meccanismo per rilevare quando l'utente fa clic sul pulsante Nega, non esiste un modo incorporato per rilevare che l'utente ha chiuso bruscamente la finestra popup (o ha chiuso il proprio browser Web, spento il proprio computer, e così via). La condizione Deny viene fornita nel caso in cui si desideri ripetere l'utente con ambiti ridotti (ad esempio, si richiede "email" ma è necessario solo un profilo e l'utente può procedere senza fornire la propria email).
Se la risposta dal callback di accesso contiene l'errore, access_denied
, indica l'utente ha cliccato il negare tasto:
function onSignInCallback(authResult) {
if (authResult['error'] && authResult['error'] == 'access_denied') {
// User explicitly denied this application's requested scopes
}
}
Si dovrebbe essere in grado di implementare di accesso senza rilevare se la finestra era chiuso; questo è dimostrato in virtualmente all of the Google+ sample apps. In breve, dovresti evitare di utilizzare uno spinner come preferisci e invece nascondere l'interfaccia utente autenticata fino a quando l'utente non ha eseguito l'accesso.
Non è consigliabile farlo, ma per implementare il rilevamento della chiusura a comparsa, si potrebbe fare qualcosa di simile a ignorare il window.open
chiamata globale, allora detect in window.unload o polling se la finestra è stata chiusa senza l'autenticazione dell'utente:
var lastOpenedWindow = undefined;
window.open = function (open) {
return function (url, name, features) {
// set name if missing here
name = name || "default_window_name";
lastOpenedWindow = open.call(window, url, name, features);
return lastOpenedWindow;
};
}(window.open);
var intervalHandle = undefined;
function detectClose() {
intervalHandle = setInterval(function(){
if (lastOpenedWindow && lastOpenedWindow.closed) {
// TODO: check user was !authenticated
console.log("Why did the window close without auth?");
window.clearInterval(intervalHandle);
}
}, 500);
}
Nota che, come ho implementato esso, questo meccanismo non è affidabile e soggetto a condizioni di gara .
Hi profonda .. ha u ottenere qualsiasi slolution per questo? – Warrior