Token automatisch mit Google Drive API mit PHP-Skript aktualisieren
Ich folgte noch einmalDIESES TUTORIAL Um eine Datei mit PHP direkt von meinem REMOTE SERVER auf Google Drive hochzuladen, habe ich ein neues API-Projekt über die Google API Console erstellt, den Drive API-Dienst aktiviert, die OAuth-Client-ID und das Client-Geheimnis angefordert, sie in ein Skript geschrieben und dann hochgeladen zusammen mitGoogle APIs Client Library für PHP Ordner dazuhttp://www.MYSERVER.com/script1.php, um den Auth-Code abzurufen:
<?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);
?>
Wenn ich besuchehttp://www.MYSERVER.com/script1.php I Autorisierung erlauben und bekomme den Auth-Code, den ich in einem zweiten Skript schreiben kann. Dann lade ich es hochhttp://www.MYSERVER.com/script2.php, der aussieht wie:
<?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);
?>
Nun, jetzt ist die Datei drive.txt auf meinem Google Drive hochgeladen und die Struktur der Datei token.json ist wie folgt:
{"access_token":"XXX","token_type":"Bearer","expires_in":3600,"refresh_token":"YYY","created":1365505148}
Nun, wie Sie sich vorstellen können, kann ich script2.php aufrufen und die Datei bis zu einer bestimmten Zeit hochladen. Schließlich ist der Punkt: Ichwill nicht das Token, das verfällt, ichIch möchte keine Autorisierung zulassen Jedes Mal, wenn es abläuft (Aufruf von script1.php): Ich muss die script2.php regelmäßig während des Tages aufrufen, um meine Datei automatisch hochzuladen.ohne Benutzerinteraktion. Also, was ist der beste Weg, umautomatisch aktualisieren das symbol für immer in diesem zusammenhang? Benötige ich ein anderes Skript? Kann ich script2.php Code hinzufügen? oder ändern Sie die token.json-Datei? Und wo kann ich die verbleibende Zeit bis zum Ablauf des Tokens ablesen? Vielen Dank!