获取 Google Analytics API token Google_Client getAccessToken 返回 null 空。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取 Google Analytics API token Google_Client getAccessToken 返回 null 空。相关的知识,希望对你有一定的参考价值。
我试图为一个服务账户获取谷歌访问令牌,以便我可以从客户端访问分析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()
结果为true,所以我想我必须刷新token,但我不知道如何刷新。
经过大量的试验和错误,我发现我必须使用 $client->fetchAccessTokenWithAssertion()
而不是 $client->getAccessToken()
.
public static function getGoogleServiceToken():?string {
$keyFile = base_path() . '/keys/xxxxxxxx-xxxxxxx.json';
$client = new Google_Client();
$client->setAuthConfig($keyFile);
$client->setApplicationName('Analytics Demo');
$client->setAccessType('access_type');
$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
if ($client->isAccessTokenExpired()) {
$token = $client->fetchAccessTokenWithAssertion();
}
else {
$token = $client->getAccessToken();
}
return $token['access_token'];
}
客户端。
...
private _handleGetResponse(response) {
...
gapi.analytics.auth.authorize({
serverAuth: {
access_token: response.token,
}
});
...
不知道为什么完全没有像样的文档。即使知道要用这个方法,我也找不到关于这个方法到底是干什么的文档。还是欢迎任何解释或一些文档的链接!
以上是关于获取 Google Analytics API token Google_Client getAccessToken 返回 null 空。的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Google Analytics API 获取 Google Ads 关键字和广告内容
获取 Google Analytics API token Google_Client getAccessToken 返回 null 空。
无法获取 Google Analytics API 的 oAuth2 访问令牌
Google Analytics 报告 API - 权限不足 403