2

Google Analytic v3 用の Google API PHP クライアント ライブラリを使用しようとしています。

書いた簡単なアプリは家では使えるのですが、会社でやってみるとうまくいきません。プログラムを実行すると、php アプリを Google アカウントに認証するよう求められます。アクセスを許可した後、私は得る

Google_IOException: HTTP エラー: (0) 128 行目の C:\wamp\www\google\GoogleClientApi\io\Google_CurlIO.php のホストに接続できませんでした

組織でプロキシ サーバーに接続する必要があります。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.';
4

4 に答える 4

2

curl でプロキシ設定を構成する必要があります。を呼び出す行については、Google_CurlIO.php を確認してくださいcurl_exec($ch)

次のようなものを事前に追加する必要がある場合があります。

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

于 2013-06-11T17:00:14.393 に答える
0

バージョン 2.2.0 の更新

ライブラリは、環境変数を読み取る Guzzle を使用して、プロキシを自動的にセットアップ (またはセットアップしない) します (GuzzleHttp\Client クラスを参照) 177 行目:

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

Google OAuth は単純な HTTP では機能しないため、HTTPS プロキシが必要だと思います。

追加するだけ

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

そしてそれはそれ自体で機能します。

于 2017-10-02T06:47:40.607 に答える