2013-06-11 4 views
2

Я пытаюсь использовать библиотеку клиентов Google API PHP для Google Analytics v3.Google Api PHP Клиентская библиотека

Я могу запустить простое приложение, которое я написал дома, но когда я пытаюсь в офисе, он не работает. Когда я запускаю программу, я прошу авторизовать приложение php для моей учетной записи google. После предоставления доступа я получаю

Google_IOException: Ошибка HTTP: (0) не может подключиться к хосту в C: \ WAMP \ WWW \ Google \ GoogleClientApi \ ю \ 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.'; 

ответ

2

Необходимо настроить параметры прокси-сервера в curl. Проверьте Google_CurlIO.php на строку, которая вызывает curl_exec($ch).

Вы можете добавить что-то похожее на заранее:

curl_setopt ($ ч, CURLOPT_PROXY, 'ваш прокси-сервер');

+0

Спасибо, похоже, место, которое мне нужно изменить. К сожалению, у меня теперь есть проблема с аутентификацией с прокси-сервером. –

5

Просто чтобы добавить (поскольку для этого не удалось найти результатов в google), если вы хотите избежать необходимости редактировать библиотеку, вы можете указать дополнительные параметры curl через объект $ client. Код для этого выглядит примерно так.

$client = new Google_Client(); 
$client->getIo()->setOptions(array(
    CURLOPT_PROXY => 'myproxy.mywebsite.com', 
    CURLOPT_PROXYPORT => 8909 
)); 
+0

Это действительно правильный ответ, ни предыдущий. –

1

Обновление v2.0.0

$client = new Google_Client(); 
$httpClient = $client->getHttpClient(); 
$httpClient->setDefaultOption("proxy", "http://{$proxyUser}:{$proxyPass}@{$proxyAddress}:{$proxyPort}"); 
0

Обновление для версии 2.2.0

библиотека использует жрать, который читает переменные ENVIRONNEMENT для автоматической настройки (или нет) прокси (см GuzzleHttp \ Клиентский класс) строка 177:

if ($proxy = getenv('HTTPS_PROXY')) { 
     $defaults['proxy']['https'] = $proxy; 
    } 

Я предполагаю, что вам нужен прокси-сервер HTTPS, поскольку Goog le OAuth не будет работать над простым HTTP.

Просто добавьте

PutEnv ('https_proxy = https: // {your.proxy.url}: {port_number}');

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

Смежные вопросы