Я пытаюсь реализовать кнопку «Вход с помощью G +», используя гибридный поток на стороне сервера, и я продолжаю получать ту же ошибку:
Google_IO_Exception' with message 'HTTP Error: Unable to connect: '0'
Я везде искал, все пробовал, я не могу это исправить. Я использую последнюю версию клиентской библиотеки Google PHP от GitHub (последнее обновление 17 мая). Я проверил миллион раз, если мои client_id & client_secret были правильными.
Вот мой код:
set_include_path("C:\wamp\www\src" . PATH_SEPARATOR . get_include_path()); include_once '../config/config.php'; require_once 'Google/Client.php'; require_once 'Google/Service.php'; require_once 'Google/Service/Plus.php'; $client = new Google_Client(); $client->setClientId($client_id); $client->setClientSecret($client_secret); $client->setRedirectUri($redirect_uri); $client->addScope("https://www.googleapis.com/auth/plus.login"); if (isset($_REQUEST['storeToken'])) { if (isset($_POST['code'])) { $client->authenticate($_POST['code']); // ERROR $_SESSION['access_token'] = $client->getAccessToken(); unset($_SESSION['logout']); } }
сset_include_path("C:\wamp\www\src" . PATH_SEPARATOR . get_include_path()); include_once '../config/config.php'; require_once 'Google/Client.php'; require_once 'Google/Service.php'; require_once 'Google/Service/Plus.php'; $client = new Google_Client(); $client->setClientId($client_id); $client->setClientSecret($client_secret); $client->setRedirectUri($redirect_uri); $client->addScope("https://www.googleapis.com/auth/plus.login"); if (isset($_REQUEST['storeToken'])) { if (isset($_POST['code'])) { $client->authenticate($_POST['code']); // ERROR $_SESSION['access_token'] = $client->getAccessToken(); unset($_SESSION['logout']); } }
изset_include_path("C:\wamp\www\src" . PATH_SEPARATOR . get_include_path()); include_once '../config/config.php'; require_once 'Google/Client.php'; require_once 'Google/Service.php'; require_once 'Google/Service/Plus.php'; $client = new Google_Client(); $client->setClientId($client_id); $client->setClientSecret($client_secret); $client->setRedirectUri($redirect_uri); $client->addScope("https://www.googleapis.com/auth/plus.login"); if (isset($_REQUEST['storeToken'])) { if (isset($_POST['code'])) { $client->authenticate($_POST['code']); // ERROR $_SESSION['access_token'] = $client->getAccessToken(); unset($_SESSION['logout']); } }
Я попробовал запрос cURL с параметром code
полученным после входа пользователя в систему.
curl --data code=4%2F3dZSVbozE_Kd4Sdf85KHPln-wChQ.ojCViNnNCQcYYKs_1NgQtmXZbUwqjAI&grant_type=authorization_code&redirect_uri=postmessage&client_id=<my_client_id>&client_secret=<my_client_secret> https://accounts.google.com/o/oauth2/token
Он работает отлично, я получаю следующее:
{ "access_token" : "ya29.GwAwNLxa5vExHxoAAACkL-MxCUL7K6SlOLSs2DNWCBipZcpyYwcOohejabVBYg", "token_type" : "Bearer", "expires_in" : 3565, "id_token" : "<very_long_id_token>", "refresh_token" : "1/4Tj6y6yCQQFH2XzrLumNqMmurAr4Ik0pooF4nrhe1Zk" }
Сначала я подумал, что какой-то параметр моего запроса был неправильным, потому что очень странно, что libary продолжает возвращать ту же ошибку (Google_IO_Exception 'с сообщением «Ошибка HTTP: не удается подключиться:« 0 »), даже если параметр неверен (я пробовал $client->authenticate('This is not a valid code');
) или если запросы на google.accounts возвращают uri_mismatch. Это нормально?
Я надеюсь, что кто-то может помочь, потому что я не знаю, что делать: /
Большое спасибо !
PS: Я запускаю эти тесты с использованием WAMP Server 2.4 (PHP версии 5.4.12)
Другая публикация (аналогичная выше) относится.
Я, наконец, решил проблему, изменив следующие настройки PHP.ini:
Я перезапустил Apache, и все было хорошо!