Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.2K
Vistas
API de Google Drive usando C# - Subiendo

Estoy tratando de usar la API de Google Drive desde una aplicación asp.net para cargar archivos.

Problema: el código funciona localmente, pero cuando se carga en el servidor no sucede nada (la página sigue cargando... no se muestra la pantalla de consentimiento. Se agradece la ayuda. Se puede escribir en la carpeta "UploadedPdf" y client_secrets.json existe en la carpeta.

NOTA: No instalé nada en el servidor, solo cargué todos los archivos incluidos los dll de la API de Google en la carpeta bin del servidor.

 UserCredential credential; using (var filestream = new FileStream(Server.MapPath("UploadedPdf/client_secrets.json"), FileMode.Open, FileAccess.Read)) { credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(filestream).Secrets, new[] { DriveService.Scope.Drive }, "user", CancellationToken.None, new FileDataStore(Server.MapPath("UploadedPdf/"))).Result; } // Create the service. var service = new DriveService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = "Drive API Sample", }); Google.Apis.Drive.v2.Data.File body = new Google.Apis.Drive.v2.Data.File(); body.Title = "My document"; body.Description = "A test document"; body.MimeType = "text/plain"; byte[] byteArray = System.IO.File.ReadAllBytes(Server.MapPath("UploadedPdf/sample.txt")); System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray); FilesResource.InsertMediaUpload request = service.Files.Insert(body, stream, "text/plain"); request.Upload(); Google.Apis.Drive.v2.Data.File file = request.ResponseBody;
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

FileDatastore coloca los archivos de forma predeterminada en %appData%. Normalmente haría algo como. (supongamos que también uso "usuario")

 new FileDataStore("Console.Analytics.Auth.Store")

Luego, cuando lo llamo, aparece un directorio llamado

 %AppData%\Roaming\Console.Analytics.Auth.Store

en ese directorio ahora vive un archivo llamado

 Google.Apis.Auth.OAuth2.Responses.TokenResponse-user

no he probado que hacer

 new FileDataStore(Server.MapPath("UploadedPdf/"))

lo hará, pero supongo que obtendrá un directorio llamado

 %AppData%\Roaming\serverpat/uploadpdf/

Que no creo que sea lo que buscas. Si eso es realmente lo que está tratando de hacer, ¿ha hecho que se pueda escribir en ese directorio? Es posible que desee considerar el uso de LocalFileDataStore en su lugar.

No estoy seguro si este es tu problema o no.

También recuerde que está codificando "usuario" por lo que técnicamente su código le pedirá que se autentique una vez para "usuario" después de eso, tiene la autenticación en ese archivo para "usuario", por lo que no hay razón para solicitarlo nuevamente.

over 4 years ago · Santiago Trujillo Denunciar

0

Creo que estás llamando mal a AuthorizeAsync(). Utilice la palabra clave await y el control remoto .Result. Tendrá que marcar el método como asíncrono para hacer esto.

También sugeriría usar el método UploadAsync() en su lugar. Tampoco necesita cargar todo el archivo en la memoria con ReadAllBytes(). Simplemente use File.OpenRead() y pase FileStream en lugar de MemoryStream.

Google tiene un código de ejemplo:https://developers.google.com/api-client-library/dotnet/guide/media_upload

over 4 years ago · Santiago Trujillo Denunciar

0

Su código sugiere que está utilizando el flujo de trabajo/credenciales de "Aplicación instalada", que se supone que funciona bien si está ejecutando su aplicación ASP.NET localmente. Sin embargo, cuando mueve el mismo código a un servidor web, ya no es una aplicación instalada. Entra en la categoría de "Aplicación Web".

Debe ir a Google Developer Console->Credentials->Create New Client ID y generar un nuevo conjunto de credenciales para su aplicación web. También debe cambiar el flujo de OAuth según esta guía:

https://developers.google.com/api-client-library/dotnet/guide/aaa_oauth#web-applications-aspnet-mvc

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda