google compte déconnexion et rediriger
j'utilise openid pour connecter l'utilisateur.(compte google seulement). Maintenant, j'ai un panneau en lien dans ma page, en cliquant sur, je veux que l'utilisateur soit connecté de comptes google et la page pour être redirigé vers ma page d'accueil. cela peut-il être fait ??
Edition
Changer la réponse acceptée parce que maintenant Google permet de rediriger [continue] vers n'importe quel domaine que vous voulez.
7 réponses
j'ai résolu ce problème en appelant cette fonction lorsque l'utilisateur clique sur le lien de déconnexion:
var logout = function(){
document.location.href = "https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=http://www.example.com";
}
Lorsque l'utilisateur clique sur le lien, le navigateur de rediriger l'utilisateur vers la page de déconnexion et seulement lorsque la déconnexion est terminée, l'utilisateur est redirigé vers le site de " http://www.example.com ".
j'espère que cela peut aider.
Défis
demandant https://www.google.com/accounts/Logout déconnecte l'utilisateur. Il ya un paramètre continueUrl que Google ajoute à cette adresse parfois, mais il ne réussira à rediriger l'utilisateur lorsque la cible est un certain site Google, et non le vôtre. Cela rend l'approche inutilisable.
de plus, la spécification OpenID n'inclut pas la déconnexion globale à ce moment-là. moment.
il y a un autre chemin:
Suggestion
incluez une IFrame sur votre page et utilisez le gestionnaire D'événements JavaScript onClick sur le lien de déconnexion pour charger https://www.google.com/accounts/Logout dans L'IFrame. Après cela (vous pourriez vouloir vérifier si L'IFrame chargé avec succès), rediriger l'utilisateur vers une procédure de déconnexion pour votre propre site. Après la déconnexion de laisser ça page de redirection vers votre page d'accueil.
le lien pourrait ressembler un peu à ceci:
<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>
vous devez implémenter la fonction StartPollingForCompletion()
pour vérifier périodiquement si la page de déconnexion est chargée. utilisez setTimeout()
pour chronométrer le sondage, et vérifiez s'il y a une propriété sur L'IFrame (Je ne sais pas avec certitude laquelle fonctionnera, parce que vous travaillez sur plusieurs sites ici).
voir aussi ces questions:
comment ajouter une fonctionnalité de déconnexion à un site activé par OpenID?
j'ai essayé de faire la même chose. Pour googleapps seulement -
Pour vous déconnecter, essayez les deux options suivantes:
1) en utilisant 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) En Utilisant 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>
comme j'ai passé un énorme quantité de temps sur ce problème de connexion/déconnexion google pour mon application (qui est un noeud/serveur MongoDB, en utilisant massivement Google Docs et Google Script API), j'ai dû partager mes résultats ici..
La seule bonne façon de complètement déconnecter l'utilisateur est d'utiliser ceci :
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 vous utilisez la solution donnée ci-dessus par ira, il fait une déconnexion partielle, il semble pour l'onglet courant du navigateur. Ce qui signifie que si l'utilisateur ferme l'onglet, et rouvrez l'application, il sera toujours connecté au compte précédent.
j'ai dû utiliser une fenêtre externe parce que je n'ai pas été en mesure de rediriger correctement vers mon application Après déconnexion à partir du compte google email. Cette solution fonctionne la plupart du temps, si la bande passante de l'utilisateur n'est pas trop lente, en laissant 3 secondes à la déconnexion se faire avant de fermer le popup. Puis l'utilisateur doit se connecter avec un autre compte dans mon application de fenêtre principale.
cela confirme la solution de floccinaucinihilipilification et peut-être la solution iframe donnée ci-dessus devrait être meilleure que la mienne.
j'ai juste dû faire la même chose, déconnecter l'utilisateur. d'une certaine façon, la réponse acceptée ne fonctionne pas pour moi, j'ai une erreur de google
The page you requested is invalid.
donc j'ai fini par mettre ceci dans ma page:
<img src="https://www.google.com/accounts/Logout" />
qui déconnecte avec succès l'utilisateur. source
voilà ce que je fais, Je ne me souviens pas si je l'ai inventé ou trouvé quelque part... Il fonctionne comme un charme... mis à part le fait qu'il vous déconnecte de tous les sites Google (Je ne peux pas croire qu'ils ne fournissent pas un moyen approprié pour le faire, mais là vous allez.)
<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>
Je ne sais pas si ce que j'ai fait était bien. Mais j'ai réussi à utiliser le code comme ceci:
<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>