0

背景: それぞれが複数のプロファイルを持つ 2 つのアカウントがあります。提供された APIを使用して、PHP でアプリケーションを開発しています。両方のアカウントから別々にデータを正常に取得できますが、Google_Client オブジェクトを (もちろん別の変数名を使用して) 2 回目にインスタンス化すると、最初のアカウントから即座にログアウトされ、最初のアカウントの設定が上書きされます。
PHP API クライアントを使用して同時に 2 つのアカウントにログインすることに成功した人はいますか?それを達成する方法についてのヒントを教えてくれますか?
関連するコード セクション:

$client1    = new Google_Client();
$client1    ->setAssertionCredentials($omitted);
$client1    ->setClientId($id);
$client1    ->setAccessType('offline_access');
$gaClient1  = new Google_AnalyticsService($client);
//I can now successfully query the Analytics API, but when I do this
$client2    = new Google_Client();
//and query gaClient1 again, it throws a "you must login/401"-error
4

1 に答える 1

0

問題は、APIがファイルのキャッシュを使用してリクエストを処理することだと思います。2 番目のクライアントが作成されると、同じキャッシュ フォルダーが使用されるため、以前の設定が上書きされます。

今あなたのconfig.phpには次のものがあります:

'ioFileCache_directory'  =>
    (function_exists('sys_get_temp_dir') ?
        sys_get_temp_dir() . '/Google_Client' :
    '/tmp/Google_Client')

これは常に同じ結果を返す部分です。クライアントを作成するときに、独自の構成配列を送信すると、マスターと結合されます。したがって、次を使用できます。

$client1    = new Google_Client(array('ioFileCache_directory'  => '/tmp/dirclient1'));
$client2    = new Google_Client(array('ioFileCache_directory'  => '/tmp/dirclient2'));

また、コードで を作成しました$client1が、後で を使用します$gaClient1 = new Google_AnalyticsService($client);。そうあるべきではあり$gaClient1 = new Google_AnalyticsService($client1);ませんか?

于 2013-05-03T14:34:54.893 に答える