Actualizar automáticamente el token utilizando la unidad de Google API con el script php
Seguí de nuevoESTE TUTORIAL para cargar un archivo en Google Drive con php, directamente desde mi SERVIDOR REMOTO: así que he creado un nuevo Proyecto API desde la Consola API de Google, habilité el servicio API de la Unidad, solicité el ID de Cliente de OAuth y el Secreto del Cliente, los escribí en un script y luego lo cargué Juntos conBiblioteca de clientes API de Google para PHP carpeta a estehttp://www.MYSERVER.com/script1.php, para recuperar el código de autenticación:
<?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);
?>
Cuando yo visitehttp://www.MYSERVER.com/script1.php I permitir autorización y obtenga el código de Autentificación que puedo escribir en un segundo script. Luego lo subo ahttp://www.MYSERVER.com/script2.php, que se parece a
<?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);
?>
Bueno, ahora el archivo drive.txt se carga en mi Google Drive y la estructura del archivo token.json es una especie de:
{"access_token":"XXX","token_type":"Bearer","expires_in":3600,"refresh_token":"YYY","created":1365505148}
Ahora, como pueden imaginar, puedo llamar a script2.php y subir archivos hasta un tiempo determinado. Finalmente, el punto es: yono quiero el token a expirar, yono quiero permitir autorización cada vez que caduque (recordando script1.php): necesito llamar al script2.php periódicamente durante el día, para cargar mi archivo automáticamente,sin interacción del usuario. Entonces, ¿cuál es la mejor manera deactualizar automáticamente ¿El token para siempre en este contexto? ¿Necesito otro guión? ¿Puedo agregar algo de código a script2.php? o modificar el archivo token.json? ¿Y dónde puedo leer el tiempo restante antes de que caduque el token? ¡Gracias!