如何使用Google Api PHP客户端同时登录多个帐户

时间:2013-05-03 13:21:20

标签: php google-api oauth-2.0 google-analytics-api google-api-php-client

背景:我们有两个帐户,每个帐户都包含多个配置文件。 我正在使用provided API在PHP中开发一个应用程序。 我可以单独成功从两个帐户中检索数据,但每当我第二次实例化Google_Client对象时(当然使用不同的变量名称),它会立即将我从第一个帐户中删除并覆盖第一个帐户的设置。
有没有人成功地使用PHP API客户端同时登录到两个帐户,并且可以给我一个如何实现这一点的提示?
相关代码部分:

$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

1 个答案:

答案 0 :(得分:0)

我想问题是api使用文件缓存来处理请求。现在,当创建第二个客户端时,它正在使用相同的缓存文件夹,因此它将覆盖以前的设置。

现在在你的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);