【问题标题】:PHP Google Analytics server to server OAuth get Refresh TokenPHP Google Analytics 服务器到服务器 OAuth 获取刷新令牌
【发布时间】:2017-03-02 12:15:33
【问题描述】:

我正在尝试从 Google 的身份验证服务器获取 refresh token,以便在使用官方 Google PHP client library 的服务器端身份验证中与 Google Analytics API 一起使用 Service Account Credential

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

gapi.analytics.auth.authorize({
    serverAuth: {
        access_token: accessToken <-refresh token is that even possible?
    }
});

我当前的 PHP 代码是:

$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'];

但是没有refresh_token。我可以var_dumpeverything,但我只能找到访问令牌。我已经尝试过这个Refresh Token for Google Api Php Client,但它没有用。

你能帮帮我吗?我怎样才能得到一个。 非常感谢

【问题讨论】:

    标签: php google-analytics-api google-api-php-client service-accounts


    【解决方案1】:
    1. 服务帐户的工作方式与 Oauth2 不同。他们没有刷新令牌。
    2. JavaScript 无权使用刷新令牌。
    3. 您为什么担心服务帐户应该只在每小时需要一次身份验证时才请求身份验证的流量。就交通而言,我认为这是次要的。

    如果服务帐户正在工作,则无法回答您想要做的事情。

    【讨论】:

    • 非常感谢,所以我将存储我的访问令牌并使用它。您能否告诉我是否有比比较时间更好的方法来检查令牌是否仍然有效?我会将我的令牌+当前时间存储在我的数据库中,并检查是否已经过了 3600 秒。对不起,如果这是一个愚蠢的问题,但我对此比较陌生
    • 您不应该由客户端库为您处理这些问题。
    • 这是什么意思?如果我从数据库中获取访问令牌,我必须检查它是否仍然有效,然后再将其发送到我的 javascript 函数。如果我不这样做,就会出错。
    • 在数据库中存储访问令牌似乎有点矫枉过正。但我想我不知道你的系统是如何设置的
    • 我正在使用 Craft CMS 并创建一个插件,如果这对您有帮助,我的老板说我应该存储令牌
    猜你喜欢
    • 2012-04-18
    • 2014-07-09
    • 2016-09-16
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多