Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.2K
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda