PHP Google Analytics服务器到服务器OAuth获取刷新令牌

PHP Google Analytics服务器到服务器OAuth获取刷新令牌,php,google-analytics-api,google-api-php-client,service-accounts,Php,Google Analytics Api,Google Api Php Client,Service Accounts,我正试图从Google的身份验证服务器获取一个刷新令牌,以便在服务器端身份验证中与Google Analytics API一起使用服务帐户凭据 我可以创建一个访问令牌并使用它,但目前每当用户进入页面时,我都会创建一个新令牌。我想减少我们的流量,并获得一个刷新令牌,将其传递给我的JavaScript函数 gapi.analytics.auth.authorize({ serverAuth: { access_token: accessToken <-refresh t

我正试图从Google的身份验证服务器获取一个
刷新令牌
,以便在服务器端身份验证中与Google Analytics API一起使用
服务帐户凭据

我可以创建一个
访问令牌
并使用它,但目前每当用户进入页面时,我都会创建一个新令牌。我想减少我们的流量,并获得一个刷新令牌,将其传递给我的JavaScript函数

gapi.analytics.auth.authorize({
    serverAuth: {
        access_token: accessToken <-refresh token is that even possible?
    }
});
但是没有刷新令牌。我可以
var\u dump
一切,但我只能找到访问令牌。我已经试过了,但没用

你能帮帮我吗?我怎样才能得到一个。 多谢各位

  • 服务帐户的工作方式与Oauth2不同。他们没有刷新令牌
  • JavaScript没有使用刷新标记的能力
  • 为什么您担心流量?服务帐户只应在每小时需要一次身份验证时才请求身份验证。就交通而言,我认为这是次要的
    回答如果服务帐户正在工作,您想做的事情不可能离开它

    非常感谢,所以我将存储我的访问令牌并使用该令牌。你能告诉我是否有比比较时间更好的方法来检查代币是否仍然有效吗?我会将我的令牌+当前时间存储在数据库中,并检查3600是否已过。抱歉,如果这是一个愚蠢的问题,但我对这一点比较陌生你不应该是客户库为你处理的。你这是什么意思?在将访问令牌发送到javascript函数之前,如果我从数据库中获取它,我必须检查它是否仍然有效。如果我不这样做,就会出现一个错误。在数据库中存储访问令牌似乎有些过分。但我想我不知道你的系统是如何设置的我正在使用Craft CMS并创建一个插件如果这对你有帮助,我的老板说我应该存储令牌
    $client = new \Google_Client();
    $client->setApplicationName("Craft CMS Plugin");
    $client->setAuthConfig($credentialPath);
    $client->setAccessType('offline');
    $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
    
    $client->refreshTokenWithAssertion();
    
    $this->analyticsAccount = new \Google_Service_Analytics($client);
    $token = $client->getAccessToken();
    $accessToken = $token['access_token'];