Google api 谷歌API在未经验证的应用程序中撤销了授权

Google api 谷歌API在未经验证的应用程序中撤销了授权,google-api,google-api-php-client,Google Api,Google Api Php Client,我们的应用程序使用了几种不同的谷歌API。该应用程序请求离线访问谷歌搜索控制台和谷歌分析 用户提供的授权不时会被撤销。多个用户的授权被撤销,不是在同一时间,而是在几天的时间跨度内 我检查了所有的嫌疑犯,但没有匹配的。以我自己的账户为例。我已经一个星期没有登录了,但突然间我的助学金被撤销了。我确认他们在我的谷歌账户中被撤销了。因此,经过一周的工作,提出离线请求,所有的补助金都被撤销了,除了基本补助金 我正在使用GooglePHPAPI包,将访问令牌对象附加到每个请求 $this->clien

我们的应用程序使用了几种不同的谷歌API。该应用程序请求离线访问谷歌搜索控制台和谷歌分析

用户提供的授权不时会被撤销。多个用户的授权被撤销,不是在同一时间,而是在几天的时间跨度内

我检查了所有的嫌疑犯,但没有匹配的。以我自己的账户为例。我已经一个星期没有登录了,但突然间我的助学金被撤销了。我确认他们在我的谷歌账户中被撤销了。因此,经过一周的工作,提出离线请求,所有的补助金都被撤销了,除了基本补助金

我正在使用GooglePHPAPI包,将访问令牌对象附加到每个请求

$this->client = new \Google_Client();
$this->client->setAuthConfig(env("GOOGLE_CLIENT_SECRET_JSON_PATH"));
$this->analyticsService = new \Google_Service_Analytics($this->client);

$this->client->setAccessToken($user->google_access_token_object);
我还为请求设置了回调

$client->setTokenCallback(function($cacheKey, $accessToken) use ($user, $client) {
    $cacheEntry = $client->getCache()->getItem($cacheKey)->get();
    $googleAccessTokenObject = json_decode($user->google_access_token_object, true);
    $googleAccessTokenObject["access_token"] = $cacheEntry["access_token"];
    $googleAccessTokenObject["expires_in"] = $cacheEntry["expires_in"];
    $googleAccessTokenObject["scope"] = $cacheEntry["scope"];
    $googleAccessTokenObject["token_type"] = $cacheEntry["token_type"];
    $googleAccessTokenObject["id_token"] = $cacheEntry["id_token"];
    $googleAccessTokenObject["created"] = time();
    if(!empty($cacheEntry["refresh_token"])) {
        $googleAccessTokenObject["refresh_token"] = $cacheEntry["refresh_token"];
    }

        $user->google_access_token_object = json_encode($googleAccessTokenObject);
        $user->save();
});
这在几周内都不会出现问题,但就好像谷歌决定撤销给予该应用程序的每一笔额外拨款一样

本文中提出的任何一点都不适用于我们:

由于多个帐户在几天的时间跨度内受到影响(这种情况已发生多次),因此这似乎不是一个基于帐户的问题,而是一个应用程序级别的问题


Google开发者控制台中的应用程序的“发布状态”设置为“测试”。不过,我还没有发现任何信息声称这是一个问题。

我相信有一些信息流传,在没有经过验证的应用程序中,刷新代币只能使用一周。我不知道有任何与此相关的官方声明,但这似乎是目前的工作方式。尽管如此,我真的找不到任何相关文档。@DaImTo在you link中说“外部用户类型和发布状态为“测试”时,会发出一个7天后到期的刷新令牌。”但这不是100%准确。我已经让刷新令牌工作了很长时间。我以前也遇到过一次这个问题,当时不是在测试中(在我添加分析范围之前)。然而,无论这一限制是多么零散,这都可以解释我的问题。虽然不仅仅是刷新令牌过期了,授权也会从google帐户中删除,所以,仅仅获得一个新的刷新令牌是不够的,你必须明确地重新授予权限。我已经向google的一些人发出了ping,我也将自己做一些内部测试。