Automatycznie odśwież token za pomocą api dysku google ze skryptem php

Poszedłem ponownieTEN TUTORIAL aby przesłać plik na Dysk Google za pomocą php, bezpośrednio z mojego ZDALNEGO SERWERA: więc stworzyłem nowy Projekt API z Konsoli API Google, włączyłem usługę Drive API, zażądałem OAuth Client ID i Client Secret, napisałem je w skrypcie, a następnie przesłałem razem zBiblioteka klienta Google API dla PHP folder do tegohttp://www.MYSERVER.com/script1.php, aby pobrać kod autoryzacyjny:

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

?>

Kiedy odwiedzamhttp://www.MYSERVER.com/script1.php I zezwolić na autoryzację i pobierz kod Auth, który mogę napisać w drugim skrypcie. Następnie przesyłam go dohttp://www.MYSERVER.com/script2.php, kto wygląda jak:

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

?>

Cóż, teraz plik drive.txt jest przesyłany na mój Dysk Google, a struktura pliku token.json jest swego rodzaju:

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

Teraz, jak możesz sobie wyobrazić, mogę zadzwonić do script2.php i przesłać plik do określonego czasu. Wreszcie chodzi o to: Janie chcę token wygasa, janie chcę zezwalać na autoryzację za każdym razem, gdy wygasa (przywołanie script1.php): Muszę okresowo wywoływać script2.php w ciągu dnia, aby przesłać plik automatycznie,bez interakcji użytkownika. Więc jaki jest najlepszy sposóbautomatycznie odświeżać token na zawsze w tym kontekście? Czy potrzebuję innego skryptu? Czy mogę dodać kod do script2.php? lub zmodyfikować plik token.json? A gdzie mogę odczytać czas pozostały do ​​wygaśnięcia tokena? Dzięki!

questionAnswers(2)

yourAnswerToTheQuestion