Actualiser automatiquement jeton à l'aide de google drive api de script php

J'ai suivi à nouveau CE TUTORIEL pour télécharger un fichier sur Google Drive avec php, directement à partir de mon SERVEUR DISTANT: j'ai donc créé une nouvelle API de Projet à partir de l'API Google Console, le Lecteur compatible API de service, a demandé OAuth d'identification du Client et Client Secret, a écrit dans un script, puis le télécharger avec Google Api de la Bibliothèque du Client pour PHP dossier à ce http://www.MYSERVER.com/script1.php, pour récupérer Auth code:

<?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);

?>

Lorsque je visite http://www.MYSERVER.com/script1.php je d'autoriser et obtenir le code d'autorisation que je peux écrire dans un second script. Puis-je le télécharger à http://www.MYSERVER.com/script2.php, qui ressemble à:

<?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);

?>

Bien, maintenant, le fichier drive.txt est téléchargé sur mon Google Drive et de la structure de jeton.fichier json est une sorte de:

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

Maintenant, comme vous pouvez l'imaginer, je peux appeler script2.php et télécharger le fichier jusqu'à un certain temps. Enfin, le point est: je ne veux pas le jeton à expiration, je ne souhaitez pas accorder l'autorisation chaque fois qu'il expire (rappelant script1.php): j'ai besoin d'appeler le script2.php périodiquement au cours de la journée, pour charger mon fichier automatiquement, sans interaction de l'utilisateur. Alors, quelle est la meilleure façon de actualiser automatiquement le jeton toujours dans ce contexte? Ai-je besoin d'un autre script? Puis-je ajouter un peu de code pour script2.php? ou de modifier le jeton.fichier json? Et où puis-je lire le temps restant avant le jeton d'expiration? Merci!

OriginalL'auteur Huxley | 2013-04-09