2016-06-29 10 views
0

Ich bin mir nicht sicher, ob ich diese Frage richtig stelle. Ich möchte die Google-Anmeldung verwenden, um Nutzer für bestimmte Aktionen in meiner Webanwendung oder für bestimmte Seiten der Anwendung zu authentifizieren.Google-Anmeldung, Sitzungsstatus speichern?

Ich habe die Anweisungen für Google Sign-In gefolgt und ich bekomme das id_token und übergebe das an meinen Server, der dann den tokeninfo-Endpunkt verwendet, um das id_token zu verifizieren und das id_token für Benutzerinformationen auszutauschen.

Muss ich ein id_token bekommen und dieses an meinen Server und dann an den tokeninfo-Endpunkt zur Verifizierung übergeben, wenn ich irgendeine PHP-Aktion machen will oder gibt es eine Möglichkeit, den authentifizierten Zustand zu speichern, um all diese Aufrufe zu verhindern auf den tokeninfo-Endpunkt, sobald der Benutzer authentifiziert ist?

Ich bin nur nicht sicher, wie man diesen letzten Teil geht. Im Moment übergebe ich den Token mit Javascript so an meinen Server.

function sendToken(googleUser) { 
     var id_token = googleUser.getAuthResponse().id_token; 
     console.log(id_token); 
     var xhr = new XMLHttpRequest(); 
     xhr.open('POST', 'https://app.mydomain.com/test.php'); 
     xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
     xhr.onload = function() { 
      console.log(xhr.responseText); 
     }; 
     xhr.send('idtoken=' + id_token); 
    } 

Dann auf meinem Backend mache ich das in PHP.

$url = 'https://www.googleapis.com/oauth2/v3/tokeninfo'; 
$myvars = 'id_token=' . $_POST["idtoken"]; 

$ch = curl_init($url ); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $myvars); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$response = curl_exec($ch ); 

I $ response dann überprüfen Sie die Benutzer und weiterhin Aktionen wie das Einfügen in der Datenbank, wenn der Benutzer von Google validiert wurde zu validieren. Ich mache diese Validierung jedes Mal, wenn ein Benutzer Daten in die Datenbank eingeben muss, was mir langsam vorkommt. Ich bin mir sicher, dass mir ein Schritt fehlt, der die Dinge verbessern würde.

Danke!

Antwort

0

Ich weiß, es ist nicht PHP, aber this answer könnte auch für Sie nützlich sein.

Grundsätzlich handelt es sich nicht um eine Google-Anmeldung, sondern um eine Frage von PHP (und des von Ihnen verwendeten PHP-Frameworks). In Ihrer $response Ich glaube, dass Sie die E-Mail-Adresse des Benutzers erhalten. Sie müssen nun einen Sitzungscookie festlegen, dass dies die E-Mail ist. Sobald Sie dies getan haben, sind Sie mit der Google-Anmeldung fertig. Jetzt kommt es nur auf Ihren Benutzer, Ihren PHP-Code und die Cookies des Benutzers an.