Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.2K
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!