Foros aprenderaprogramar.com
Aprender a programar => De todo un poco... => Mensaje iniciado por: yoelrodguez en 09 de Abril 2020, 00:54
-
Tengo la siguiente situación: estoy tratando de hacer un movimiento interno dentro de mi Google Drive con php, desde la api y me envía el siguiente error:
An error occurred: { "error": { "errors": [ { "domain": "global",
"reason": "cannotCopyFile", "message": "This file cannot be copied by
the user." } ], "code": 403, "message": "This file cannot be copied by
the user." } }
Uso otras funciones, que si me trabajan sin problema como es crear un directorio, buscar el directorio así como subir los archivos al directorio. El token y las credenciales que estoy usando es el mismo para todo. A continuación les dejo el código de la función que estoy usando para hacer la copia para ver si me pueden ayudar.
Gracias
Función
public function renameFile($service, $fileId, $newTitle)
{
try {
$file = new Google_Service_Drive_DriveFile($newTitle);
$updatedFile = $service->files->copy($fileId, $file, array(
'fields' => 'title'
));
return $updatedFile;
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
}
}
Array $newTitle
$newTitle = array(
'title' => 'titulo del directorio',
'parents' => array('folder parents')
);
-
Pero el código de la función renameFile que has puesto es para renombrar un fichero, no para copiarlo, o al menos eso es lo que me parece a mí, es decir, que refieres un problema para copiar pero el código es para renombrar ?
-
Hola gracias por contestar según la api de google drive ese es el método para copiar quizás me equivoque con el nombre de la función pero la estructura de adentro es para el copiado y también sirve para renombre.
-
He encontrado esto aunque no lo he probado. Pienso que el problema podría estar relacionado con las credenciales de usuario ::)
private function copy_base_file( $new_file_name )
{
$service = $this->get_google_service_drive( $this->get_google_client() );
$origin_file_id = "{id of file to copy}";
$copiedFile = new Google_Service_Drive_DriveFile();
$copiedFile->setName($new_file_name);
try {
$response = $service->files->copy($origin_file_id, $copiedFile);
$ownerPermission = new Google_Service_Drive_Permission();
$ownerPermission->setEmailAddress("{myemailhere}");
$ownerPermission->setType('user');
$ownerPermission->setRole('owner');
$service->permissions->create("{sheet_id_here}", $ownerPermission,
['emailMessage' => 'You added a file to ' .
static::$applicationName . ': ' . "Does this work"]);
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
}