我正在开发一个网络应用程序,该应用程序可以为技术不够强大的用户获取并显示谷歌分析数据。
为此,我:
1) 让用户使用 OAuth 登录
2)存储访问 token
3) 创建一个 Google_Client 并给它这个访问 token
4) 使用这个 Google_Client 来获取分析数据
这对第一个用户来说没有问题。但是,对于第二个用户,它会以“拒绝访问”响应而失败。通过 PHP 代码,我发现这是因为 Google API 客户端缓存了原始访问 token (在/var/tmp/google-api-php-client 的文件系统中),并使用这个而不是新访问我提供的 token 。
如何防止 Google API 客户端在文件系统中缓存访问 token ?
(有关 Google_Client 正在使用的缓存的背景信息:当您提供访问 token 时,它会将其与从 token 范围派生的 key 一起存储。由于访问 token 更改时范围保持不变,因此 Google_Client 不会创建新缓存每个访问 token 的条目。)
最佳答案
为了我:
$client = \Google_Client();
//...
$client->getCache()->clear();
$client->setAccessToken($access_token);
完美地工作。
关于PHP Google API 客户端缓存访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35441085/