Автоматически обновлять токен с помощью API Google Drive с помощью PHP-скрипта

Я снова последовалЭТО ОБУЧЕНИЕ чтобы загрузить файл на Google Диск с помощью php, прямо с моего УДАЛЕННОГО СЕРВЕРА: поэтому я создал новый проект API из Google API Console, включил службу Drive API, запросил OAuth Client ID и Client Secret, написал их в сценарии и затем загрузил его вместе сКлиентская библиотека Google API для PHP папка к этомуhttp://www.MYSERVER.com/script1.php, чтобы получить код авторизации:

setClientId('XXX'); // HERE I WRITE MY Client ID

$drive->setClientSecret('XXX'); // HERE I WRITE MY Client Secret

$drive->setRedirectUri('urn:ietf:wg:oauth:2.0:oob');

$drive->setScopes(array('https://www.googleapis.com/auth/drive'));

$gdrive = new Google_DriveService($drive);

$url = $drive->createAuthUrl();
$authorizationCode = trim(fgets(STDIN));

$token = $drive->authenticate($authorizationCode);

?>

Когда я посещаюhttp://www.MYSERVER.com/script1.php Iразрешить авторизацию и получить код авторизации, который я могу написать во втором скрипте. Затем я загружаю его вhttp://www.MYSERVER.com/script2.php, который выглядит как:

setClientId('X');  // HERE I WRITE MY Client ID
$drive->setClientSecret('X');  // HERE I WRITE MY Client Secret
$drive->setRedirectUri('urn:ietf:wg:oauth:2.0:oob');
$drive->setScopes(array('https://www.googleapis.com/auth/drive'));

$gdrive = new Google_DriveService($drive);

$_GET['code']= 'X/XXX'; // HERE I WRITE AUTH CODE RETRIEVED AFTER RUNNING REMOTE script.php

file_put_contents('token.json', $drive->authenticate());

$drive->setAccessToken(file_get_contents('token.json'));

$doc = new Google_DriveFile();

$doc->setTitle('Test Drive');
$doc->setDescription('Document');
$doc->setMimeType('text/plain');

$content = file_get_contents('drive.txt');

$output = $gdrive->files->insert($doc, array(
      'data' => $content,
      'mimeType' => 'text/plain',
    ));

print_r($output);

?>

Что ж, теперь файл drive.txt загружен на мой диск Google и структура файла token.json выглядит следующим образом:

{"access_token":"XXX","token_type":"Bearer","expires_in":3600,"refresh_token":"YYY","created":1365505148}

Теперь, как вы можете себе представить, я могу вызвать script2.php и загружать файл до определенного времени. Наконец, дело в том, что ядон»не хочу маркер истек, ядон»не хочу разрешать авторизацию каждый раз, когда он истекает (вспоминая script1.php): мне нужно периодически вызывать script2.php в течение дня, чтобы автоматически загрузить мой файл,без взаимодействия с пользователем, И что'лучший способавтоматически обновлять жетон навсегда в этом контексте? Нужен ли мне другой сценарий? Могу ли я добавить код в script2.php? или изменить файл token.json? И где я могу прочитать время, оставшееся до истечения срока действия токена? Спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос