2016-03-09 23 views
5

nella pagina di Google Integrate Google Sign-In si ha la sezione in basso che mostra come a firmare l'utente utilizzando JavaScript:API di accesso Google - Come faccio a registrare qualcuno con PHP?

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

ho cercato e non riesco a trovare un modo per firmare l'utente fuori come questo usando PHP.

Ho trovato come firmare un utente completamente da Google, ma non lo voglio. So anche che posso cancellare la variabile $_SESSION che contiene il codice di accesso, ma che non è ancora completamente ciò che voglio.

Qualcuno sa come posso registrare qualcuno dalla mia applicazione Google utilizzando PHP?

risposta

1

Questo dovrebbe funzionare, ho risolto il problema con Mark Il codice di Guinn, che era il fatto che le attività del metodo gapi.auth2.init(); non erano state completate. .next() 'ha risolto il problema.

<?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 è l'unico modo per manipolare i cookie per domini diversi dal tuo.

+0

Quindi lo script sopra rimuove solo il cookie? – krummens

0

Se intendevi firmare un utente su auth2.signOut() sul lato server, check out this code (anche se è python, dovresti ottenere l'idea).

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) 

Dipende da come si struttura sessioni, ma è possibile inviare richiesta AJAX al server prima signOut().

0

Scegli questa lavorerà per voi

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

che disconnette l'utente da google. Non voglio che lo – krummens

-1

Perché non basta avere il vostro signout copione simile a questo:

<?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

si verifichi nella console javascript: 'ReferenceError: Can not find variable: gap' – krummens

+0

Stai caricando google api? E hai provato il mio suggerimento di utilizzare un window.load o un gestore già attivo? –

+0

sì, sto caricando google api. – krummens