Autor Tema: No puedo hacer copia de directorio desde api de google drive  (Leído 2880 veces)

yoelrodguez

  • Sin experiencia
  • *
  • Mensajes: 3
    • Ver Perfil
    • Digital Solution
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')
);

javi in the sky

  • Avanzado
  • ****
  • Mensajes: 393
    • Ver Perfil
Re:No puedo hacer copia de directorio desde api de google drive
« Respuesta #1 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 ?

yoelrodguez

  • Sin experiencia
  • *
  • Mensajes: 3
    • Ver Perfil
    • Digital Solution
Re:No puedo hacer copia de directorio desde api de google drive
« Respuesta #2 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.

javi in the sky

  • Avanzado
  • ****
  • Mensajes: 393
    • Ver Perfil
Re:No puedo hacer copia de directorio desde api de google drive
« Respuesta #3 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();
}

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".