2016-03-09 11 views
5

Auf Integrate Google Sign-In Seite Google hat es den Abschnitt an der Unterseite, die Sie, wie zeigt dem Benutzer Verwendung von Javascript zu unterschreiben:Google Anmelden API - Wie logge ich jemanden mit PHP aus?

<a href="#" onclick="signOut();">Sign out</a> 
<script> 
    function signOut() { 
    var auth2 = gapi.auth2.getAuthInstance(); 
    auth2.signOut().then(function() { 
     console.log('User signed out.'); 
    }); 
    } 
</script> 

Ich habe gesucht, und ich kann den Benutzer nicht einen Weg finden, um sich abzumelden wie das mit PHP.

Ich habe gefunden, wie man einen Benutzer völlig aus Google heraus unterzeichnet, aber ich will das nicht. Ich weiß auch, dass ich die $_SESSION Variable löschen kann, die den Zugangscode hält, aber das ist immer noch nicht vollständig was ich will.

Weiß jemand, wie ich jemanden aus meiner Google-Anwendung mit PHP anmelden kann?

Antwort

1

Dies sollte funktionieren, fest ich das Problem mit Mark Guinns Code, was die Tatsache war, dass die Aufgaben der Methode gapi.auth2.init(); nicht beendet waren. .next() 'löste das Problem.

<?php 
    session_start(); 
    session_unset(); 
    session_destroy(); 
?> 
<html> 
    <head> 
     <meta name="google-signin-client_id" content="YOUR_CLIENT_ID"> 
    </head> 
    <body> 
     <script src="https://apis.google.com/js/platform.js?onload=onLoadCallback" async defer></script> 
     <script> 
      window.onLoadCallback = function(){ 
       gapi.load('auth2', function() { 
        gapi.auth2.init().then(function(){ 
         var auth2 = gapi.auth2.getAuthInstance(); 
         auth2.signOut().then(function() { 
          document.location.href = 'login.php'; 
         }); 
        }); 
       }); 
      }; 
     </script> 
    </body> 
</html> 
0

JavaScript ist die einzige Möglichkeit, Cookies für andere Domains zu bearbeiten.

+0

Also das obige Skript entfernt nur den Cookie? – krummens

0

Wenn Sie einen Benutzer unter auth2.signOut() auch serverseitig signieren wollten, check out this code (obwohl es Python ist, sollten Sie die Idee bekommen).

app.signOut = function() { 
    // Get `GoogleAuth` instance 
    var auth2 = gapi.auth2.getAuthInstance(); 
    // Sign-Out 
    fetch('/signout', { 
    method: 'POST', 
    credentials: 'include' 
    }).then(function(resp) { 
    if (resp.status === 200) { 
     auth2.signOut() 
     .then(changeProfile); 
    } else { 
     console.error("couldn't sign out"); 
    } 
    }).catch(function(error) { 
    console.error(error); 
    }); 
}; 

And this one

@app.route('/signout', methods=['POST']) 
def signout(): 
    # Terminate sessions 
    session.pop('id', None) 

    return make_response('', 200) 

Es hängt davon ab, wie Sie Sitzungen strukturieren, aber Sie können, bevor signOut() Ajax-Request an den Server senden.

0

prüfen diese es wird euch arbeiten

header('Location:https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=http://www.domain.com'); 
+0

, die den Benutzer aus Google protokolliert. Ich will nicht, dass – krummens

-1

Warum Sie nicht nur Ihre signout Skript Blick etwas wie dieses:

<?php 
session_start(); 
session_unset(); 
session_destroy(); 
?> 
<html> 
    <head> 
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID"> 
    </head> 
    <body> 
    <script src="https://apis.google.com/js/platform.js?onload=onLoadCallback" async defer></script> 
    <script> 
     window.onLoadCallback = function(){ 
     gapi.load('auth2', function() { 
      gapi.auth2.init(); 
      var auth2 = gapi.auth2.getAuthInstance(); 
      auth2.signOut().then(function() { 
      document.location.href = 'login.php'; 
      }); 
     }); 
     }; 
    </script> 
    </body> 
</html> 
+0

ein Fehler in der Javascript-Konsole auftritt: 'ReferenceError: Kann Variable nicht finden: Gap' – krummens

+0

Laden Sie die Google API? Und hast du meinen Vorschlag, einen window.load oder onready Handler zu benutzen, versucht? –

+0

Ja, ich lade die Google API. – krummens

Verwandte Themen