Я снова выполнил ЭТО РУКОВОДСТВО, чтобы загрузить файл на Google Диск с php, прямо из моего УДАЛЕННОГО СЕРВЕРА: поэтому я создал новый проект API из консоли Google API, включил службу Drive API, запросил идентификатор клиента OAuth и секрет клиента, написал их в скрипте, а затем загрузил его вместе с Папка клиентской библиотеки API Google для PHP в эту http://www.MYSERVER.com/script1.php, чтобы получить код аутентификации:
<?php
require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_DriveService.php';
$drive = new Google_Client();
$drive->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, я разрешаю авторизация и получите код аутентификации, который я могу написать во втором скрипте. Затем я загружаю его на http://www.MYSERVER.com/script2.php, который смотрит нравиться:
<?php
require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_DriveService.php';
$drive = new Google_Client();
$drive->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): I нужно периодически вызывать script2.php в течение дня, чтобы загружать мой файл автоматически, без взаимодействия с пользователем. Итак, как лучше всего автоматически обновить токен навсегда в этом контексте? Мне нужен другой сценарий? Могу я добавить код в script2.php? или изменить файл token.json? И где я могу прочитать время, оставшееся до истечения срока действия токена? Спасибо!