【发布时间】:2020-06-17 08:42:12
【问题描述】:
我正在尝试获取服务帐户的 Google 访问令牌,以便我可以从客户端访问 Analytics API。
在服务器端我有以下代码:
$keyFile = base_path() . '/keys/xxxxxxxx-xxxxxxxxx.json';
$client = new Google_Client();
$client->setApplicationName('Analytics Demo');
$client->setAuthConfig($keyFile);
$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
$token = $client->getAccessToken(); // Returns null
在某些时候它返回了一个令牌,但在几次调用之后它开始返回null。
尝试获取 $client->getRefreshToken() 也会返回 null。
当我将 $client 放入 Google_Service_Analytics 对象时,一切似乎都正常,所以我知道密钥文件是正确的并且可以正确读取:
$analytics = new Google_Service_Analytics($client);
$accounts = $analytics->management_accounts->listManagementAccounts(); // Returns proper data
对可能出现的问题有什么想法吗?
更新:
调用$client->isAccessTokenExpired() 结果为真,所以我想我必须刷新令牌,但我不知道如何。
【问题讨论】:
-
我很好奇您为什么需要访问令牌。如果这是一个服务帐户,它应该会根据需要自动为您刷新。
-
@DalmTo 我需要将令牌发送到客户端,以便它可以嵌入分析图
-
让我猜猜你试图将嵌入式 api 链接到服务帐户?
-
确实,
fetchAccessTokenWithAssertion似乎可以正常工作。我已经用一个完整的例子更新了答案。
标签: php google-analytics google-api service-accounts