2017-03-26 3 views
1

Der Versuch, auf diese Google-Client-API Beispielgoogle Client api Authentifizieren mit einem Backend-Server

https://developers.google.com/identity/sign-in/web/backend-auth

ich meine Zugriffstoken über Javascript und per Post an meine PHP über Ajax JavaScript-Objekt unten nicht funktioniert.

expires_at 
: 
1490552860336 
expires_in 
: 
2223 
first_issued_at 
: 
1490549260336 
id_token 
: 
"eyJhbGciOiJSUzI1NiIsImtpZCI6ImRkMDM4NzVmMzkzMTdiZThlNTc0MDBlNmMzMDYzMmFmNTU4YzJkZTQifQ.eyJhenAiOiI5Mjg3MzEzODM5NzQtc3RsdmFyc291cnZoNmdqaDdvbjkwZWwxOGhjOHVrNXYuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiI5Mjg3MzEzODM5NzQtc3RsdmFyc291cnZoNmdqaDdvbjkwZWwxOGhjOHVrNXYuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMTQ1MTMzNjU2ODMwMzExNzMwOTgiLCJlbWFpbCI6IndoeXRlYXZlbWVjaGFuaWNhbEBnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiYXRfaGFzaCI6IkF2SUZQaHNjVmFNY1htTEdtand6M2ciLCJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiaWF0IjoxNDkwNTQ5MjU2LCJleHAiOjE0OTA1NTI4NTYsIm5hbWUiOiJUcmF2aXMgS2xlaW4iLCJwaWN0dXJlIjoiaHR0cHM6Ly9saDQuZ29vZ2xldXNlcmNvbnRlbnQuY29tLy1BdzlCUjF4YnVBNC9BQUFBQUFBQUFBSS9BQUFBQUFBQUFBQS9BTWNBWWk5b2ZNV1NtcllGc2pTc0xUcFpZZHhkT0FEaGZBL3M5Ni1jL3Bob3RvLmpwZyIsImdpdmVuX25hbWUiOiJUcmF2aXMiLCJmYW1pbHlfbmFtZSI6IktsZWluIiwibG9jYWxlIjoiZW4ifQ.PBcvfMs9_MO9mcHDtGGyb3VbO-O374tHH7w4gWr8ZMpRDYyynY6ZQd5BxRxlh6b__upzxz6gMYQ29yY__zDnEp4_NrkSp7RWQAcoF-JuY8xM1GtDy5IwEFKPxDh9h-9bGoxCx5jgX7-bu2F5Xk6opwZUzoyyYk5BT1xXpBfAe35CJHK_NAzSfrwEX8vU-hIP9C_BjipXptg5Eo3fi3DxPWRVbrzsscV0DDASm9xEi5ilLkUxBwRZN9bk6hgXXgn2Ts7Mo4B7Rue1oyB_rkNJ3RSgH7ylnHrVePiVwJ_15aKwiD64FgcmdLOruLEm9pADoiAodMVNZ6HAElr3MuWG1w" 
idpId 
: 
"google" 
login_hint 
: 
"AJDLj6JimYVJadfBfXai38izEPbdRaSSCtY5FyzYIVQ1IPE2kad13fq5-9Qwkik2AlWx3_Qlco531-R7LVEwcxvs8Xhw0TvrSg" 
session_state 
: 
Object 
token_type 
: 
"Bearer" 

meine PHP ist wie folgt

require_once 'google-api-php-client-2.1.1/vendor/autoload.php'; 
      // Get $id_token via HTTPS POST. 

      $client = new Google_Client(['client_id' =>'my google client id' ]); 
      $payload = $client->verifyIdToken($this->input->post('id_token')); 
      if ($payload) { 
       $userid = $payload['sub']; 
       // If request specified a G Suite domain: 
       //$domain = $payload['hd']; 
      } else { 
       // Invalid ID token 
      } 

So frustrierend Ich habe noch nie Glück mit Google-API Beispiele hatte. Ich kann anscheinend nichts im Netz finden, um das zu funktionieren. Bitte hilf mir. Ich suche im Grunde für eine ID oder Token kann ich in meiner Datenbank überprüfen und speichern

Ich

$payload = $client->verifyIdToken($this->input->post('id_token')); 

Screenshot zeigt diese Funktion stecken zu bleiben, wie weit ich komme, bevor ein Fehler ausgelöst wird.

Screen shot of error

Ich landete diesen Weg nach oben gehen

$q = 'https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=' . $this->input->post('id_token'); 
      $json = file_get_contents($q); 
      $userInfoArray = json_decode($json,true); 
      $googleEmail = $userInfoArray['email']; 
      $google_id= $userInfoArray['kid']; 

Ich bin nicht sicher, ob das Kind eine eindeutige ID für den Benutzer ist oder nicht, aber es hält den gleichen Wert zurück.

+1

Ist das wirklich Ihr Objekt? Und nicht so etwas? '{expires_at: 1490552860336, expires_in: 2223, first_issued_at: 1490549260336 ....}' notieren Sie die Klammern und Komma – Yolo

+0

Nein, es ist nur die Info im Objekt –

+0

http://stackoverflow.com/questions/41797238/cant-validate- google-access-token-wrong-number-of-segments Dies ist eine Person mit einem ähnlichen Problem, denke ich –

Antwort

0

Es Dank arbeitete, hier Mine

<?php 
require_once 'google-api-php-client-2.2.0_PHP54/vendor/autoload.php'; 

// Get $id_token via HTTPS POST. 
$id_token= $_POST['id_token']; 
$CLIENT_ID = 'yourclientid......apps.googleusercontent.com'; 
$client = new Google_Client(['client_id' => $CLIENT_ID]); 
$payload = 'https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=' . $id_token; 
     $json = file_get_contents($payload); 
     $userInfoArray = json_decode($json,true); 
     $googleEmail = $userInfoArray['email']; 
     $google_id= $userInfoArray['sub']; 

if ($googleEmail) 
{ 
    echo "validated".$googleEmail; 
} else { 
    echo "inValidate" ; 
    } 
?> 
Verwandte Themen