descargar - Script PHP para acceder al servidor al servidor a la unidad de Google para mostrar mi propio archivo
script para subir archivos a google drive (1)
Necesito ayuda para tomar la decisión correcta sobre cómo usar google api.
Deseo desarrollar una secuencia de comandos para conectar el servidor al servidor (sin ninguna conexión Oauth2) a la carpeta de mi unidad de google para mostrar el archivo y la carpeta de la unidad de google en una página web. También estableceré un trabajo cron para hacer una acción si algunos archivos se actualizan.
¿Es esto posible? En la plataforma Google Cloud, encontré la api de la unidad con la interacción de servidor a servidor. ¿Es esta la solución correcta?
¡Gracias!
https://developers.google.com/drive/v3/web/quickstart/php
Aquí encontrarás la manera de habilitar la API. Desde ese punto, puedes usar la biblioteca.
El sitio dará una muestra:
<?php
require __DIR__ . ''/vendor/autoload.php'';
define(''APPLICATION_NAME'', ''Drive API PHP Quickstart'');
define(''CREDENTIALS_PATH'', ''~/.credentials/drive-php-quickstart.json'');
define(''CLIENT_SECRET_PATH'', __DIR__ . ''/client_secret.json'');
// If modifying these scopes, delete your previously saved credentials
// at ~/.credentials/drive-php-quickstart.json
define(''SCOPES'', implode('' '', array(
Google_Service_Drive::DRIVE_METADATA_READONLY)
));
if (php_sapi_name() != ''cli'') {
throw new Exception(''This application must be run on the command line.'');
}
/**
* Returns an authorized API client.
* @return Google_Client the authorized client object
*/
function getClient() {
$client = new Google_Client();
$client->setApplicationName(APPLICATION_NAME);
$client->setScopes(SCOPES);
$client->setAuthConfigFile(CLIENT_SECRET_PATH);
$client->setAccessType(''offline'');
// Load previously authorized credentials from a file.
$credentialsPath = expandHomeDirectory(CREDENTIALS_PATH);
if (file_exists($credentialsPath)) {
$accessToken = file_get_contents($credentialsPath);
} else {
// Request authorization from the user.
$authUrl = $client->createAuthUrl();
printf("Open the following link in your browser:/n%s/n", $authUrl);
print ''Enter verification code: '';
$authCode = trim(fgets(STDIN));
// Exchange authorization code for an access token.
$accessToken = $client->authenticate($authCode);
// Store the credentials to disk.
if(!file_exists(dirname($credentialsPath))) {
mkdir(dirname($credentialsPath), 0700, true);
}
file_put_contents($credentialsPath, $accessToken);
printf("Credentials saved to %s/n", $credentialsPath);
}
$client->setAccessToken($accessToken);
// Refresh the token if it''s expired.
if ($client->isAccessTokenExpired()) {
$client->refreshToken($client->getRefreshToken());
file_put_contents($credentialsPath, $client->getAccessToken());
}
return $client;
}
/**
* Expands the home directory alias ''~'' to the full path.
* @param string $path the path to expand.
* @return string the expanded path.
*/
function expandHomeDirectory($path) {
$homeDirectory = getenv(''HOME'');
if (empty($homeDirectory)) {
$homeDirectory = getenv("HOMEDRIVE") . getenv("HOMEPATH");
}
return str_replace(''~'', realpath($homeDirectory), $path);
}
// Get the API client and construct the service object.
$client = getClient();
$service = new Google_Service_Drive($client);
// Print the names and IDs for up to 10 files.
$optParams = array(
''pageSize'' => 10,
''fields'' => "nextPageToken, files(id, name)"
);
$results = $service->files->listFiles($optParams);
if (count($results->getFiles()) == 0) {
print "No files found./n";
} else {
print "Files:/n";
foreach ($results->getFiles() as $file) {
printf("%s (%s)/n", $file->getName(), $file->getId());
}
}
Esto mostrará 10 archivos tal como dicen.
Este es (en mi opinión) la mejor manera.