Я работаю над динамическим веб-сайтом, который в значительной степени опирается на вызовы ajax. Я заметил, что когда я загружаюсь на первую страницу и пытаюсь получить доступ к главному окну поиска на этой странице, требуется 5-7 секунд, пока не завершится запрос ajax, который заполняет главное окно поиска. Мне удалось выяснить, что задержка вызвана библиотекой PHP API Google, которая запускается, как только загружается HTML-код моей страницы, чтобы попытаться аутентифицировать посетителя. Я провел сравнительный анализ сценария по частям и выяснил, что проблема заключается в методе библиотеки verifyIdToken, выполнение которого занимает около 5 секунд.
Я заметил, что в документации и руководствах Google говорит: «Библиотека автоматически загрузит и кеширует сертификат, необходимый для проверки, и обновит его, если срок его действия истек».
Кто-нибудь знает, если:
Вот полный код, над которым я работаю, возможно, кто-то обнаружит в нем ошибку:
$client_id='xxxxxx';
$client_secret='xxxxxxxx';
$client = new Google_Client();
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setApplicationName("Converser Google API");
$client->addScope('https://www.googleapis.com/auth/plus.me');
$client->addScope('https://www.google.com/m8/feeds');
$client->addScope('https://mail.google.com/');
$client->addScope('email');
$client->setRedirectUri('postmessage');
$client->setAccessType("offline");
$client->setApprovalPrompt("force");
if (!isset($_SESSION['google-api']['access_token'])) {
if (isset($_REQUEST['code'])) g_exchangeCode($_REQUEST['code']);
else g_kill(0);
} else {
$accessToken=$_SESSION['google-api']['access_token'];
$client->setAccessToken($accessToken);
$returnData['auth_by']='token';
}
if($client->isAccessTokenExpired()) {
if (isset($_REQUEST['gid']) && !empty($_REQUEST['gid'])) g_refreshToken($_REQUEST['gid']);
else if (isset($_REQUEST['code']) && !empty($_REQUEST['code'])) g_exchangeCode($_REQUEST['code']);
else g_kill(1);
}
$token_data = $client->verifyIdToken()->getAttributes();
Это вызвано ipv6, вам нужно использовать ipv4 или вы получите эту ошибку .
это совершить разрешенные опции cURL, которые будут установлены через setClassConfig
, Установка этого должна решить это.
'CURLOPT_IPRESOLVE', 'CURL_IPRESOLVE_V4'
Если вы используете мастер-ветку, чем оформить заказ этот.
Других решений пока нет …