es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Enlace de vista web de Google Drive recuperado en el explorador de API de Google, pero no en mi código.

Tengo código que sube archivos a Google Drive y establece los permisos correspondientes para que cualquier persona en el dominio pueda leerlos.

Si utilizo el explorador de la API de Google Drive y escribo el Id del archivo y escribo “webViewLink” en el cuadro de texto “fields”, entonces cuando ejecuto la solicitud, veo algo como esto (el enlace real está oculto)…

{
  "webViewLink": "https://drive.google.com/file/d/abcdef123456/view?usp=drivesdk"
}

Ingresar el enlace en una ventana de navegador privada me permite ver el archivo como se esperaba.

Sin embargo, si intento obtener el enlace en mi código C#…

c#
FilesResource.GetRequest request = _service.Files.Get(fileId);
request.Fields = "webViewLink";
var file = await _service.Files.Get(fileId).ExecuteAsync();

… entonces la propiedad file.WebViewLink siempre está vacía. Al ver la pestaña de la red, parece que se está llamando a la misma API con los mismos parámetros,

¿Alguien tiene alguna idea? He verificado dos veces que estoy utilizando la misma cuenta de Google tanto en el explorador de la API como en mi código (lo sé porque de lo contrario no podría ver otros archivos en la unidad).

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está relacionado con el alcance del acceso a la API. Es posible que el código que sube el archivo tenga un alcance más amplio que le permita acceder a la propiedad “webViewLink”, pero es posible que el alcance en el código de C# esté limitado.

    Verifica el alcance de tu acceso a la API en el código, revisando “GoogleAuthorizationCodeFlow” o “UserCredential”, y asegúrate de que incluya el alcance “drive.readonly”. También puedes intentar usar el alcance “drive” para ver si marca una diferencia.

    Otra cosa que puedes verificar es si el archivo ha terminado de procesarse antes de intentar obtener la propiedad “webViewLink”. Puedes verificar la propiedad “file.Trashed” para asegurarte de que el archivo no esté en la papelera.

    Si las soluciones anteriores no funcionan, puedes intentar usar la propiedad “webContentLink” en lugar de “webViewLink”. Es posible que no sea el mismo enlace que ves en el explorador de la API, pero debería permitirte acceder y descargar el archivo.

Comments are closed.