Foros aprenderaprogramar.com

Aprender a programar => De todo un poco... => Mensaje iniciado por: yoelrodguez en 09 de Abril 2020, 00:54

Título: No puedo hacer copia de directorio desde api de google drive
Publicado 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:

Citar
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

Código: [Seleccionar]
        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


 
Código: [Seleccionar]
    $newTitle =  array(
           'title' => 'titulo del directorio',
            'parents' => array('folder parents')
);
Título: Re:No puedo hacer copia de directorio desde api de google drive
Publicado por: javi in the sky en 09 de Abril 2020, 21:37
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 ?
Título: Re:No puedo hacer copia de directorio desde api de google drive
Publicado por: yoelrodguez en 10 de Abril 2020, 00:50
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.
Título: Re:No puedo hacer copia de directorio desde api de google drive
Publicado por: javi in the sky en 11 de Abril 2020, 14:15
He encontrado esto aunque no lo he probado. Pienso que el problema podría estar relacionado con las credenciales de usuario  ::)

Código: [Seleccionar]
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();
}