Acceso de Google+ a través de Javascript y PHP

¿Puede decirme, por favor, cómo puedo obtener los datos del usuario (nombre, correo electrónico) a través de Google+ Javascript / Php api? Voy de acuerdo con este tutorial , que describe cómo obtener authResult['code'] través de Javascript.

Está bien, lo tengo. Lo envío al servidor a través de Ajax, pero no sé cómo obtener datos de usuario como el nombre y el correo electrónico a través de PHP PERO sin redireccionamientos. Aquí están las muestras del código Javascript:

 function googleStart() { console.log('googleStart'); gapi.load('auth2', function() { auth2 = gapi.auth2.init({ client_id: '811214467813-v3fmui5dfghte5m0kmohsf6dl11ori3tg.apps.googleusercontent.com', // Scopes to request in addition to 'profile' and 'email' fetch_basic_profile: false, scope: 'profile email' }); }); } function googleSignIn(authResult) { console.log(authResult); if (authResult['code']) { console.log(authResult); // Hide the sign-in button now that the user is authorized, for example: $('#signinButton').attr('style', 'display: none'); // Send the code to the server $.ajax({ type: 'POST', url : "{link :Signgoogle:in}", accepts : 'json', // Spýtať sa na DJPW čo to tu je zakomentované //contentType: 'application/octet-stream; charset=utf-8', //processData: false, data : { 'code' : authResult['code'], 'id_token' : authResult.getAuthResponse().id_token }, ... 

PHP:

 public function actionIn() { $code = $_POST['code']; $client = new \Google_Client(); $client->setClientId(self::APP_ID); $client->setClientSecret(self::APP_SECRET); $client->setRedirectUri(self::REDIRECT_URI); $client->authenticate($code); $access_token = $client->getAccessToken(); $client->setAccessToken($access_token); $client->getAuth(); $data = $access_token; if($data) { $this->sendJson(array($data)); } else { $data = array('error' => '$client->verifyIdToken($id) skočil chybou.'); $this->sendJson($data); } } .... 

PHP recupera un access_token pero no datos de los usuarios. Por supuesto, es una llamada de Ajax, así que no puedo hacer redirecciones como describe Google en cada página. ¿Puede ayudarme? Por favor, no puedo encontrar ninguna solución.

Muchas gracias.

Una vez que tenga un cliente autenticado para el usuario, querrá realizar una solicitud al método Google+ people.get API .

 $client = new Google_Client(); $client->setClientId(CLIENT_ID); $client->setClientSecret(CLIENT_SECRET); $client->setRedirectUri(REDIRECT_URI); $client->setAccessToken($access_token); $plus = new Google_Service_Plus($client); $me = $plus->people->get('me'); print "ID: {$me['id']}\n"; print "Display Name: {$me['displayName']}\n"; print "Image Url: {$me['image']['url']}\n"; print "Url: {$me['url']}\n"; 

Para su correo electrónico , deberá iterar sobre la matriz $me['emails'] y encontrar el valor con type=account .

si no está utilizando la biblioteca del cliente de google, puede utilizar esta API de Google. Para obtener los detalles del cliente, simplemente pase el token a esta API https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=

 $response = file_get_contents ( 'https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=' . $_REQUEST['token'] ); $response = json_decode ( $response ); echo "
"; print_r ( $response ); echo "

";

Esto autenticará al usuario y devolverá el objeto

 stdClass Object ( [iss] => accounts.google.com [at_hash] => hE0R********nxg [aud] => 79*********************p.apps.googleusercontent.com [sub] => 1028*****2 [email_verified] => true [azp] => 7945823****p.apps.googleusercontent.com [email] => bik***@gmail.com [iat] => 14***7 [exp] => 1***07 [name] => Bik****M [picture] => https://lh6.googleusercontent.com/-W8cA***/photo.jpg [given_name] => Bike*** [family_name] => M [locale] => en [alg] => RS256 [kid] => 70f6c4267*******cb ) 

Encuentre un ejemplo aquí: http://wiki.workassis.com/implementing-google-sign-in-for-websites