使用刷新令牌续订后的访问令牌相同

时间:2019-03-18 06:44:31

标签: php youtube-api google-oauth google-api-php-client google-oauth2

在YouTube api上运行1个小时后,我已经面临了两天的0auth问题,被屏蔽了两天。 401凭证错误。

php artisan route:clear
php artisan config:cache
php artisan cache:clear    
php artisan view clear

}

我的测试代码的结果显示,提供刷新令牌后,访问令牌完全没有变化,即使到期时间也没有减少'expires_in'

所以这就是为什么一小时后我会遇到信用错误的原因...我不知道我的代码有什么问题,请帮助我,这是获得访问代码后我的测试代码的结果,因此您可以看到“ '访问令牌与上一个令牌相似,我也已经尝试在setAccessToken()和fetchAccessTokenWithRefreshToken()的参数上使用encode_json。没有收到错误,但结果仍然相同...

  

阵列([的access_token] => ya29.GlvQBuGBfZDQn3E8HWd4wfSbb0hLHsYVGzPBE0boJuB4ien5pcsOGqXlkEyOU7mevDLOGOWbuakTyTiAUVf2bkxNwZXX [expires_in] => 3600 [refresh_token] => 1 / KEgjy2t9kTNwCXk-ZtMTSzPSS2xl4XX [范围] => https://www.googleapis.com/auth/youtube [token_type] =>承载[创建] => 1552891085)

     

阵列([的access_token] => ya29.GlvQBuGBfZDQn3E8HWd4wfSbb0hLHsYVGzPBE0boJuB4ien5pcsOGqXlkEyOU7mevDLOGOWbuakTyTiAUVf2bkxNwZXX [expires_in] => 3600 [refresh_token] => 1 / KEgjy2t9kTNwCXk-ZtMTSzPSS2xl4XX [范围] => https://www.googleapis.com/auth/youtube [token_type] =>承载[创建] => 1552891085)

谢谢

1 个答案:

答案 0 :(得分:0)

访问令牌在一小时后过期,这是它们的工作方式。访问令牌过期后,您应该运行代码并获取新的访问令牌。在新的访问令牌过期之前获取该访问令牌将产生相同的访问令牌。

您的访问令牌是在创建时创建的(提示epoch converter)加上3600(秒)来确定令牌何时到期。

1552891085 <--- Monday, March 18, 2019 6:38:05 AM

我唯一看到的代码错误是您正在获取访问令牌,但并未实际使用它Oauth2Authentication.php

function getOauth2Client() {
    try {

        $client = buildClient();

        // Set the refresh token on the client. 
        if (isset($_SESSION['refresh_token']) && $_SESSION['refresh_token']) {
            $client->refreshToken($_SESSION['refresh_token']);
        }

        // If the user has already authorized this app then get an access token
        // else redirect to ask the user to authorize access to Google Analytics.
        if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {

            // Set the access token on the client.
            $client->setAccessToken($_SESSION['access_token']);                 

            // Refresh the access token if it's expired.
            if ($client->isAccessTokenExpired()) {              
                $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
                $client->setAccessToken($client->getAccessToken()); 
                $_SESSION['access_token'] = $client->getAccessToken();              
            }           
            return $client; 
        } else {
            // We do not have access request access.
            header('Location: ' . filter_var( $client->getRedirectUri(), FILTER_SANITIZE_URL));
        }
    } catch (Exception $e) {
        print "An error occurred: " . $e->getMessage();
    }
}