2 votes

Bibliothèque client PHP Google Api

J'essaie d'utiliser la bibliothèque Google API PHP Client pour Google Analytic v3.

Je peux faire fonctionner l'application simple que j'ai écrite à la maison, mais lorsque j'essaie au bureau, cela ne fonctionne pas. Lorsque je lance le programme, on me demande d'autoriser l'accès de l'application php à mon compte Google. Après avoir autorisé l'accès, j'obtiens

Google_IOException : Erreur HTTP : (0) Impossible de se connecter à l'hôte en C:\wamp\www\google\GoogleClientApi\io\Google_CurlIO.php à la ligne 128

Il est nécessaire de se connecter à un serveur proxy de mon organisation. Quelqu'un sait-il comment utiliser oauth 2 et la bibliothèque client php pour se connecter à un serveur proxy.

merci

Voici le code de mon client 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.';

5voto

Carl Points 1156

Juste pour ajouter (puisque je n'ai pas pu trouver de résultats dans google pour cela) si vous voulez éviter d'avoir à éditer la bibliothèque elle-même, vous pouvez spécifier les paramètres curl additionnels via l'objet $client. Le code pour le faire ressemble à peu près à ceci.

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

2voto

Michael Valentino Points 101

Vous devez configurer les paramètres du proxy dans curl. Vérifiez Google_CurlIO.php pour une ligne qui appelle curl_exec($ch) .

Il se peut que vous deviez ajouter quelque chose au préalable, comme par exemple :

curl_setopt($ch, CURLOPT_PROXY, 'your-proxy-server') ;

2voto

Vasil Nikolov Points 916

Mise à jour pour la v2.0.0

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

0voto

JML Points 111

Mise à jour pour la version 2.2.0

La bibliothèque utilise Guzzle qui lit les variables d'environnement pour configurer automatiquement (ou non) un proxy (voir GuzzleHttp \Client class) ligne 177 :

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

Je suppose que vous avez besoin d'un proxy HTTPS car Google OAuth ne fonctionne pas avec un simple HTTP.

Il suffit d'ajouter

putenv('HTTPS_PROXY=myproxy.mywebsite.com:8909');

et il fonctionne tout seul.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X