背景:我们有两个帐户,每个帐户都包含多个配置文件。
我正在使用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
答案 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);
?