Question

J'utilise OpenID pour connecter l'utilisateur. (Google compte seulement). Maintenant, j'ai un signe sur le lien dans ma page, qui, en cliquant, je veux que l'utilisateur soit connecté sur des comptes Google et la page pour être redirigé vers ma page d'accueil. cela peut être fait ??

Modifier-
Modification de la réponse acceptée parce que maintenant Google permet de rediriger [continue] à tout domaine que vous voulez.

Était-ce utile?

La solution

Je l'ai résolu ce problème d'appeler cette fonction lorsque l'utilisateur clique sur le lien de fermeture de session:

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 redirige l'utilisateur vers la page de fermeture de session et que lorsque la fermeture de session est terminée, l'utilisateur est redirigé vers le site « http://www.example.com ".

J'espère que cela peut aider.

Autres conseils

Défis

https://www.google.com/accounts/Logout consignera la à l'utilisateur. Il y a 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 de Google, et non votre propre. Cela rend l'approche inutilisable.

En outre, la spécification OpenID ne comprend pas log global sur ce moment.

Il y a une autre façon:

Suggestion

Inclure un IFrame sur votre page et utilisez le gestionnaire d'événements onClick JavaScript sur le lien pour charger https: //www.google.com/accounts/Logout dans le iFrame. Après cela (vous pouvez vérifier si le IFrame chargé avec succès), redirigent l'utilisateur à une procédure de fermeture de session pour votre propre site. Une fois connecté à laisser cette page rediriger vers votre page d'accueil.

Le lien peut sembler un peu comme 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() de vérifier périodiquement si la page a chargé fermeture de session. utiliser setTimeout() à temps le scrutin, et vérifier une propriété sur le IFrame (je ne sais pas pour sûr ceux qui fonctionnent, parce que vous êtes intersite travailler ici).

voir aussi les questions suivantes:

OpenID. Comment pouvez-vous vous déconnectez

Comment ajouter fonction de déconnexion d'un site compatible OpenID?

Je suis en train de faire la même chose. Pour les applications google seulement -
Pour essayer les deux dconnecter options suivantes:
1) A l'aide 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 je l'ai passé énorme de temps sur cette question de connexion Google / fermeture de session pour mon application (qui est un serveur de nœud / MongoDB, en utilisant massivement Google Docs et Google API Script), je a dû partager mes résultats ici ..

La seule bonne façon complètement l'utilisateur est déconnecter 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 ci-dessus a donné par l'IRA, il fait un partiel il semble fermeture de session pour l'onglet en cours du navigateur. Ce qui signifie que si l'utilisateur fermer l'onglet, et rouvrez l'application, il sera toujours connecté au compte précédent.

Je devais utiliser une fenêtre externe parce que je ne pouvais pas rediriger correctement mon application après la déconnexion du compte e-mail Google. Cette solution fonctionne la plupart du temps, si la bande passante de l'utilisateur n'est pas trop lent, laissant 3 secondes à la fermeture de session se fait avant de fermer la fenêtre. Ensuite, l'utilisateur doit se connecter avec un autre compte dans ma principale application de la fenêtre.

Ceci confirme la solution de floccinaucinihilipilification et peut-être la solution iframe donnée ci-dessus devrait être meilleur que le mien.

Je viens de faire la même chose, l'utilisateur se déconnecter. en quelque sorte la réponse acceptée ne fonctionne pas pour moi, je suis une erreur de Google

The page you requested is invalid.

donc je fini par mettre cela dans ma page:

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

qui enregistre avec succès l'utilisateur. source href="https://stackoverflow.com/questions/14450652/google-openid-is-this-an-acceptable-way-to-logout">

Voici ce que je fais, ne me souviens pas si je l'ai fait ou trouvé quelque part ... Il fonctionne comme un charme ... autre que le fait qu'il vous déconnecte de tous les sites de Google (je peux » t croient qu'ils ne fournissent pas une bonne façon de 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 la chose que j'ai eu raison. 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>

J'utilise ce code pour vous déconnecter du compte Google. Il lancera une erreur, mais ne vous inquiétez pas, il sera redirigé immédiatement après l'erreur se produit directement sur votre côté serveur d'application route signout.

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