Php Google日历API令牌未刷新

Php Google日历API令牌未刷新,php,google-api,google-oauth,google-calendar-api,google-api-php-client,Php,Google Api,Google Oauth,Google Calendar Api,Google Api Php Client,由于某些原因,当我的令牌过期时,我需要删除文件并重新连接,否则将无法正常工作。是因为没有存储新令牌还是因为没有存储新令牌 我有以下代码: if(!$_GET['id']){ echo print_r('BUSINESS NOT FOUND'); exit(); }else { $client = new Google_Client(); $client->setApplicat

由于某些原因,当我的令牌过期时,我需要删除文件并重新连接,否则将无法正常工作。是因为没有存储新令牌还是因为没有存储新令牌

我有以下代码:

if(!$_GET['id']){
            echo print_r('BUSINESS NOT FOUND');
            exit();
        }else {

            $client = new Google_Client();
            $client->setApplicationName('Google Calendar API PHP Quickstart');
            $client->setScopes(Google_Service_Calendar::CALENDAR);
            $client->setAuthConfig(__DIR__ . '/client.json');
            $client->setAccessType('offline');
            $client->setPrompt('select_account consent');


            // Load previously authorized token from a file, if it exists.
            // The file token.json stores the user's access and refresh tokens, and is
            // created automatically when the authorization flow completes for the first
            // time.
            $tokenPath = '../Remindly/accounts/' . $_GET['id'] . '.json';
            if (file_exists($tokenPath)) {
                $accessToken = json_decode(file_get_contents($tokenPath), true);
                $client->setAccessToken($accessToken);
                return $client;
            }

            // If there is no previous token or it's expired.
            if ($client->isAccessTokenExpired()) {
                // Refresh the token if possible, else fetch a new one.
                if ($client->getRefreshToken()) {
                    $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
                }
                // Save the token to a file.
                file_put_contents($tokenPath, json_encode($client->getAccessToken()));
            }

        }
如果令牌过期,您似乎没有返回
客户端
修改代码,如中所示,以在函数结束时返回客户端-如果访问令牌过期或未过期:

。。。
如果(…){
...
}否则{
$client=新的Google_客户端();
$client->setApplicationName(“谷歌日历API PHP快速启动”);
$client->setScopes(谷歌服务日历::日历只读);
$client->setAuthConfig('credentials.json');
$client->setAccessType('offline');
$client->setPrompt('select_account approve');
//从文件加载以前授权的令牌(如果存在)。
//文件token.json存储用户的访问和刷新令牌,并且
//在第一次完成授权流时自动创建
//时间。
$tokenPath='token.json';
如果(文件_存在($tokenPath)){
$accessToken=json_decode(file_get_contents($tokenPath),true);
$client->setAccessToken($accessToken);
}
//如果没有以前的令牌或它已过期。
如果($client->isAccessTokenExpired()){
//如果可能,请刷新令牌,否则请获取新令牌。
如果($client->getRefreshToken()){
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
}否则{
//请求用户的授权。
$authUrl=$client->createAuthUrl();
printf(“在浏览器中打开以下链接:\n%s\n”,$authUrl);
打印“输入验证码:”;
$authCode=trim(fgets(STDIN));
//交换访问令牌的授权代码。
$accessToken=$client->fetchAccessTokenWithAuthCode($authCode);
$client->setAccessToken($accessToken);
//检查是否有错误。
如果(数组\密钥\存在('error',$accessToken)){
抛出新异常(join(“,”,$accessToken));
}
}
//将令牌保存到文件中。
如果(!file_存在(dirname($tokenPath))){
mkdir(dirname($tokenPath),0700,true);
}
文件内容($tokenPath,json_encode($client->getAccessToken());
}
返回$client;
}
...
如果令牌过期,您似乎不会返回
客户端
修改代码,如中所示,以在函数结束时返回客户端-如果访问令牌过期或未过期:

。。。
如果(…){
...
}否则{
$client=新的Google_客户端();
$client->setApplicationName(“谷歌日历API PHP快速启动”);
$client->setScopes(谷歌服务日历::日历只读);
$client->setAuthConfig('credentials.json');
$client->setAccessType('offline');
$client->setPrompt('select_account approve');
//从文件加载以前授权的令牌(如果存在)。
//文件token.json存储用户的访问和刷新令牌,并且
//在第一次完成授权流时自动创建
//时间。
$tokenPath='token.json';
如果(文件_存在($tokenPath)){
$accessToken=json_decode(file_get_contents($tokenPath),true);
$client->setAccessToken($accessToken);
}
//如果没有以前的令牌或它已过期。
如果($client->isAccessTokenExpired()){
//如果可能,请刷新令牌,否则请获取新令牌。
如果($client->getRefreshToken()){
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
}否则{
//请求用户的授权。
$authUrl=$client->createAuthUrl();
printf(“在浏览器中打开以下链接:\n%s\n”,$authUrl);
打印“输入验证码:”;
$authCode=trim(fgets(STDIN));
//交换访问令牌的授权代码。
$accessToken=$client->fetchAccessTokenWithAuthCode($authCode);
$client->setAccessToken($accessToken);
//检查是否有错误。
如果(数组\密钥\存在('error',$accessToken)){
抛出新异常(join(“,”,$accessToken));
}
}
//将令牌保存到文件中。
如果(!file_存在(dirname($tokenPath))){
mkdir(dirname($tokenPath),0700,true);
}
文件内容($tokenPath,json_encode($client->getAccessToken());
}
返回$client;
}
...

Define nothing works您有错误消息吗?@DalmTo-我无法从日历中提取任何数据。我需要在存储令牌时删除该文件,然后重新连接,以便整个过程正常运行。Define nothing works您是否有错误消息?@DalmTo-我无法从日历中提取任何数据。我需要在存储令牌时删除该文件,然后再次连接,以便整个工作正常。