Клиентская библиотека Google Api PHP

Я пытаюсь использовать библиотеку клиентских 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}: {номер_порта}');

и он работает сам по себе.