Я пытаюсь использовать библиотеку клиентских API Google API для Google Analytics v3.
Я могу запустить простое приложение, которое я написал дома, но когда я пытаюсь в офисе, он не работает. Когда я запускаю программу, я прошу авторизовать приложение php для моей учетной записи google. После предоставления доступа я получаю
Ошибка Google_IOException: ошибка HTTP: (0) не удалось подключиться к узлу в C: \ wamp \ www \ google \ GoogleClientApi \ io \ Google_CurlIO.php в строке 128
В моей организации необходимо подключиться к прокси-серверу. Кто-нибудь знает, как использовать oauth 2 и библиотеку php-клиента для подключения к прокси-серверу.
благодаря
Ниже приведен код моего php-клиента.
session_start(); require_once dirname(__FILE__).'/GoogleClientApi/Google_Client.php'; require_once dirname(__FILE__).'/GoogleClientApi/contrib/Google_AnalyticsService.php'; $scriptUri = "http://".$_SERVER["HTTP_HOST"].$_SERVER['PHP_SELF']; $client = new Google_Client(); $client->setAccessType('online'); // default: offline $client->setApplicationName('My Application name'); //$client->setClientId(''); omitted for privacy //$client->setClientSecret(''); omitted for privacy $client->setRedirectUri($scriptUri); //$client->setDeveloperKey(''); // API key omitted for privacy // $service implements the client interface, has to be set before auth call $service = new Google_AnalyticsService($client); if (isset($_GET['logout'])) { // logout: destroy token unset($_SESSION['token']); die('Logged out.'); } if (isset($_GET['code'])) { // we received the positive auth callback, get the token and store it in session $client->authenticate(); $_SESSION['token'] = $client->getAccessToken(); } if (isset($_SESSION['token'])) { // extract token from session and configure client $token = $_SESSION['token']; $client->setAccessToken($token); } if (!$client->getAccessToken()) { // auth call to google $authUrl = $client->createAuthUrl(); header("Location: ".$authUrl); die; } echo 'Hello, world.';
Вы должны настроить параметры прокси-сервера в curl. Проверьте Google_CurlIO.php на строку, которая вызывает curl_exec($ch)
.
Возможно, вам нужно будет добавить что-то заранее, похожее на:
curl_setopt ($ ch, CURLOPT_PROXY, 'ваш-прокси-сервер');
Просто добавьте (так как я не смог найти никаких результатов в google для этого), если вы хотите избежать редактирования самой библиотеки, вы можете указать дополнительные параметры curl через объект $ client. Код для этого выглядит примерно так.
$client = new Google_Client(); $client->getIo()->setOptions(array( CURLOPT_PROXY => 'myproxy.mywebsite.com', CURLOPT_PROXYPORT => 8909 ));
Обновление для версии 2.0.0.0
$client = new Google_Client(); $httpClient = $client->getHttpClient(); $httpClient->setDefaultOption("proxy", "http://{$proxyUser}:{$proxyPass}@{$proxyAddress}:{$proxyPort}");
Обновление для версии 2.2.0
Библиотека использует Guzzle, который считывает переменные среды для автоматической установки (или отсутствия) прокси (см. Строку GuzzleHttp \ Client): 177:
if ($proxy = getenv('HTTPS_PROXY')) { $defaults['proxy']['https'] = $proxy; }
Я предполагаю, что вам нужен прокси-сервер HTTPS, поскольку Google OAuth не будет работать над простым HTTP.
Просто добавь
PutEnv ( 'https_proxy = HTTPS: // {your.proxy.url}: {номер_порта}');
и он работает сам по себе.