#php #oauth-2.0 #guzzle
Вопрос:
у меня небольшая проблема с аутентификацией oauth в Google, я вижу несколько сообщений об изменении хоста etc, но что мне добавить, потому что я думаю, что я все перепробовал. Если у вас есть какие-либо предложения .. Спасибо тебе, стеф
<?php
require 'vendor/autoload.php';
require 'config.php';
use GuzzleHttpClient;
$client = new Client([
'timeout' => 2.0,
'verify' => __DIR__ . '/cacert.pem'
]);
try
{
$response = $client-> request('GET', 'https://accounts.google.com/.well-known/openid-configuration');
$discoveryJSON = json_decode((string)$response->getBody());
$tokenEndpoint = $discoveryJSON->token_endpoint;
$userinfoEndpoint = $discoveryJSON->userinfo_endpoint;
$response = $client->request('POST', $tokenEndpoint, [
'form_params'=>[
'code' => $_GET['code'],
'client_id' => GOOGLE_ID,
'client_secret' => GOOGLE_SECRET,
'redirect_uri' => 'http://localhost/oauth2/connect.php',
'grant_type' => 'authorization_code'
]]);
$accessToken = json_decode($response->getBody())->access_token;
$response = $client->request('GET', '$userinfoEndpoint', [
'headers' => [
'Authorization' => 'Bearer ' . $accessToken]
]);
$response = json_decode($response->getBody());
if ($response->email_verified === true) {
session_start();
$_SESSION['email'] = $response->email;
header('Location: http://localhost/oauth2/secret.php');
exit();
}
}
catch (GuzzleHttpExceptionClientException $exception) {
dd($exception->getMessage()); } ?>
Комментарии:
1. Похоже, ваша машина не может найти google.com, что наводит на мысль о какой-то ошибке DNS. P. s. по какой причине вы не используете готовую библиотеку PHP Google для подключения к API вместо того, чтобы создавать все запросы самостоятельно?