echo "<br>"; echo "Este es el estado segun google" . $stateRequested; echo "<br>"; if ($_SESSION['state'] != $stateRequested) { die('Invalid state parameter'); } $url = "https://accounts.google.com/o/oauth2/token"; $post = array("code" => $code, "client_id" => $oauth2_client_id, "client_secret" => $oauth2_secret, "redirect_uri" => $oauth2_redirect, "grant_type" => "authorization_code"); //convertimos $post en un post String que usaremos en nuestro HttpPost. $postText = http_build_query($post); //creamos un objeto HttpPost pasando por parametro la URL a la que vamos a acceder. $request = new HttpPost($url); $request->setPostData($postText); $request->send(); //decodificamos el string con formato json $data = json_decode($request->getResponse()); //Alamacenamos los tokens $id_token = $data->id_token; $access_token = $data->access_token; //Url que nos da la informacion del usuario en formato JWT (json web token). $url_id_token = "https://www.googleapis.com/oauth2/v1/tokeninfo?id_token=" . $id_token; /* la informacion es de esta forma: { "issuer": "accounts.google.com", "issued_to": "547638711794-hn5b8ikbbhvaqodjeh6v36hcm7i8uk94.apps.googleusercontent.com", "audience": "547638711794-hn5b8ikbbhvaqodjeh6v36hcm7i8uk94.apps.googleusercontent.com", "user_id": "118279672935836979189", "expires_in": 3092, "issued_at": 1422267492, "email": "*****@*****.**", "email_verified": true