usebeq.wrappers.google-drive
1.0.1
See the version list below for details.
dotnet add package usebeq.wrappers.google-drive --version 1.0.1
NuGet\Install-Package usebeq.wrappers.google-drive -Version 1.0.1
<PackageReference Include="usebeq.wrappers.google-drive" Version="1.0.1" />
paket add usebeq.wrappers.google-drive --version 1.0.1
#r "nuget: usebeq.wrappers.google-drive, 1.0.1"
// Install usebeq.wrappers.google-drive as a Cake Addin #addin nuget:?package=usebeq.wrappers.google-drive&version=1.0.1 // Install usebeq.wrappers.google-drive as a Cake Tool #tool nuget:?package=usebeq.wrappers.google-drive&version=1.0.1
GoogleDriveWrapper
El paquete GoogleDriveWrapper
es una interfaz de la API de Google Drive que te permite gestionar archivos y carpetas de tu cuenta de Google Drive haciendo uso de una Cuenta de Servicio de Google.
Marco Teórico
Los Servicios de Google son una serie de herramientas y plataformas ofrecidas por Google que permiten a los desarrolladores crear aplicaciones que utilizan la funcionalidad de los servicios de Google, como Google Drive, Gmail, Google Calendar, Google Maps y muchos otros.
Google Drive es el servicio de almacenamiento en la nube de Google que permite a los usuarios almacenar y compartir archivos en línea. La API de Google Drive permite a los desarrolladores acceder a los archivos y carpetas almacenados en Google Drive y realizar operaciones como subir, descargar, buscar y compartir archivos.
Para hacer uso de la API de Google Drive, es necesario tener una cuenta de Google y configurar las credenciales de autenticación. Puedes elegir utilizar una cuenta de servicio o una cuenta personal de Google. Si utilizas una cuenta de servicio, necesitas crear una en la consola de desarrolladores de Google y descargar las credenciales de autenticación en forma de archivo JSON o P12. Si usas una cuenta personal de Google, necesitas crear un proyecto en la consola de desarrolladores de Google, habilitar la API de Google Drive y descargar las credenciales de autenticación en forma de archivo JSON.
Si vas a trabajar con una cuenta de servicio, adicional a lo anterior, debes otorgar a la cuenta, acceso a los datos de tu organización mediante la delegación de todo el dominio. Pide ayuda a un administrador avanzado del dominio de Google Workspace para delegar la autoridad de todo el dominio a una cuenta de servicio.
Una vez que se tienen las credenciales de autenticación, se pueden utilizar para autenticar las solicitudes a la API de Google Drive y realizar operaciones de archivo y carpeta. Por ejemplo, puedes utilizar la API de Google Drive para cargar archivos a la nube, compartir archivos con otros usuarios o descargar archivos de la nube.
Este es un ejemplo de como se ven las credenciales de autenticación de una cuenta de servicio de Google en formato JSON:
{
"type": "service_account",
"project_id": "project-id",
"private_key_id": "private-key-id",
"private_key": "-----BEGIN PRIVATE KEY-----\nprivate-key\n-----END PRIVATE KEY-----\n",
"client_email": "service-account-email@project-id.iam.gserviceaccount.com",
"client_id": "client-id",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/service-account-email%40project-id.iam.gserviceaccount.com"
}
Ten en cuenta que los valores de project_id, private_key_id, private_key, client_email y client_id son específicos de tu cuenta de servicio de Google y deben ser reemplazados con tus propias credenciales.
Para mayor información acerca de la creación de cuentas de servicio y creación de claves consulta la siguiente liga Autorización para Cuentas de Servicio de Google
Credenciales de Autenticación
Las credenciales de autenticación se utilizan para autenticar tu aplicación con Google Drive y obtener acceso a las funciones de la API. Las credenciales pueden ser obtenidas a través de la consola de desarrollador de Google Cloud Platform. Una vez obtenidas, puedes almacenarlas en un archivo JSON y utilizarlas en tu aplicación para autenticar las solicitudes a la API
Cuentas de Servicio de Google
Las cuentas de servicio de Google son cuentas de Google que se utilizan para autenticar y autorizar solicitudes a las APIs de Google. A diferencia de las cuentas de usuario normales de Google, que están asociadas a una persona física, las cuentas de servicio están diseñadas para ser utilizadas por aplicaciones y procesos automatizados.
Las cuentas de servicio se utilizan comúnmente en aplicaciones y servicios en la nube que necesitan acceder a los recursos de Google en nombre de un usuario o una organización. Por ejemplo, una aplicación web que necesita acceder a los archivos de Google Drive de un usuario para leer o escribir datos, o un proceso automatizado que necesita acceder a los recursos de Google Cloud Platform para realizar tareas de procesamiento de datos.
Es importante tener en cuenta que las cuentas de servicio tienen sus propios permisos de acceso, que se pueden configurar a través de la consola de desarrollador de Google Cloud Platform. Es importante revisar y configurar adecuadamente los permisos de la cuenta de servicio para asegurarse de que tenga acceso solo a los recursos necesarios y que no tenga acceso no autorizado a otros recursos.
Sobre el uso de este wrapper
La clase DriveWrapper implementa la interfaz IDriveWrapper, la cual proporciona métodos para autenticar, cargar y descargar archivos, crear y borrar directorios, entre otros.
La clase DriveWrapper utiliza la clase DriveConnection para establecer la conexión con los servicios de Google Drive al proporcionar credenciales correctas.
Descripción y uso de las propiedades de la clase Credentials
Propiedad | Default | Descripción |
---|---|---|
IsImpersonate |
bool false |
Configurar a true para crear conexiones con suplantación de identidad. |
EmailAccount |
string null |
Valor obligado, cuenta de correo del usuario físico o la institución con la que se creó el proyecto y la cuenta de servicio. |
AppName |
string null |
Valor obligado, el nombre que se le asignó al proyecto en la Google Developer Console. |
ServiceEmailAccount |
string null |
Valor obligado para autenticación con cuenta de servicio y suplantación de identidad, la dirección de correo de la cuenta servicio creada para autenticar nuestra aplicación. |
ClientSecretsPath |
string null |
Valor obligado para autenticación con cuenta de usuario, ruta donde se localizan los secretos de usuario de la cuenta de correo del usuario u organización a la que deseamos autenticarnos. |
PrivateKey |
string null |
Valor obligado para autenticación con cuenta de servicio y suplantación de identidad, contenido de la llave privada de usuario presente en el archivo credentials.json |
Paso 1: Proporcionar las credenciales de autenticación
Creación de una instancia de la clase Credentials
para autenticación haciendo uso de una cuenta de servicio para suplantación de identidad.
Ten en cuenta que los valores de EmailAccount, AppName, PrivateKey y ServiceEmailAccount son específicos de tu cuenta de servicio de Google y deben ser reemplazados con tus propias credenciales.
Credentials credentials = new Credentials {
EmailAccount = "cuenta-de-usuario@dominio.edu.mx",
AppName = "Google Login",
PrivateKey = "-----BEGIN PRIVATE KEY-----\nprivate-key\n-----END PRIVATE KEY-----\n",
ServiceEmailAccount = "quickstart-service-account@project-id.iam.gserviceaccount.com",
IsImpersonate = true
};
Paso 2. Usamos el método Authenticate para proporcionar las credenciales al wrapper
private IDriveWrapper wrapper = new DriveWrapper();
...
wrapper?.Authenticate(credentials);
Paso 3. Cargar archivos
Los métodos Upload y UploadAsync permiten cargar un archivo localmente a un directorio en Google Drive. Se comprueba si existe una carpeta remota identificada con el argumento de Identificador de Carpeta Remota y si la extensión de archivo es reconocida.
...
private string remotePathId = "187MxXsOVCxzM_AB0IBXeoe90cyvTKJ-u";
private string localPath = @"C:\Users\usebeq\Downloads\demo.jpeg";
...
// Método síncrono para cargar un archivo
// Se proporciona el directorio donde se encuentra el archivo a cargar
// Se proporciona el id la carpeta remota donde será alojado el archivo
wrapper.Upload(localPath, remotePathId);
// Método asíncrono para cargar un archivo
// Se proporciona el directorio donde se encuentra el archivo a cargar
// Se proporciona el id la carpeta remota donde será alojado el archivo
await wrapper.UploadAsync(localPath, remotePathId);
// Método síncrono para cargar un Stream
// Se proporciona el stream para cargar
// Se proporciona el id de la carpeta remota donde será alojado el archivo
// Se proporciona el MimeType del archivo contenido en el Stream
// Se proporciona un nombre para el archivo
string mimeType = MimeTypes.MimeTypes.GetMimeType(localPath);
using (FileStream stream = new FileStream(localPath, FileMode.Open)) {
string fileName = Path.GetFileName(localPath);
wrapper.Upload(stream, remotePathId, mimeType, fileName);
}
// Método asíncrono para cargar un Stream
// Se proporciona el stream para cargar
// Se proporciona el id de la carpeta remota donde será alojado el archivo
// Se proporciona el MimeType del archivo contenido en el Stream
// Se proporciona un nombre para el archivo
using (FileStream stream = new FileStream(localPath, FileMode.Open)) {
string fileName = Path.GetFileName(localPath);
await wrapper.UploadAsync(stream, remotePathId, mimeType, fileName);
}
Paso 4. Descargar archivos
Los métodos Download y DownloadAsync permiten descargar un archivo alojado en Google Drive.
...
private string remoteFileId = "1_PbdOc9yTenw9xizN7Pw53Mp8i7kDv1w";
...
// Método síncrono para descargar un archivo
// Se proporciona el id del archivo a descargar
public FileStreamResult DownloadImage() {
Stream stream = wrapper.Download(remoteFileId);
return File(stream, "image/jpeg");
}
// Método asíncrono para descargar un archivo
// Se proporciona el id del archivo a descargar
public async Task<FileStreamResult> AsyncDownloadImage() {
Stream stream = await wrapper.DownloadAsync(remoteFileId);
return File(stream, "image/jpeg");
}
Los métodos ExistFolder y GetFolderId comprueban que exista un directorio en la cuenta de Google Drive y obtienen el id de un directorio proporcionando el nombre de la carpeta.
// Comprobar que existe una carpeta proporcionando el id de Google Drive
bool exist = driveWrapper.ExistFolder(remotePath);
// Obtener los ids de archivo de las carpetas que tengan el nombre proporcionando
string[] ids = driveWrapper.GetFolderId(remotePathName);
Los métodos CreateFolder y DeleteFolder crean y borran un directorio respectivamente.
// Crear una nueva carpeta, opcionalmente, el id de la carpeta que donde se alojara, nulo para crear la carpeta en raíz
string folderId = driveWrapper.CreateFolder("NuevaCarpeta", remotePath);
// Borra archivo/carpeta con el id proporcionado
string[] ids = driveWrapper.DeleteFolder(remotePathId);
En resumen, esta clase encapsula los detalles de implementación de la API de Google Drive y proporciona una interfaz de alto nivel para cargar, descargar y manipular archivos y directorios de Google Drive de manera fácil y rápida.
Contribuciones
Las contribuciones son bienvenidas. Por favor, envía una solicitud de extracción con tus cambios.
Licencia
Este proyecto está licenciado bajo la licencia MIT.
EL SOFTWARE SE PROPORCIONA TAL CUAL, SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGUNA RECLAMACIÓN, DAÑOS U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O DE OTRO TIPO, QUE SURJA DE, FUERA DE O EN CONEXIÓN CON EL SOFTWARE O EL USO U OTROS TRATOS EN EL SOFTWARE.
Licencias de terceros Este proyecto utiliza los siguientes paquetes de terceros:
- Google.Apis.Auth Licencia Apache
- Google.Apis.Drive.v3 Licencia Apache
- CommunityToolkit.Diagnostics: Licencia MIT
- usebeq.adapters.mimetypes Licencia MIT
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Google.Apis.Auth (>= 1.60.0)
- Google.Apis.Drive.v3 (>= 1.60.0.3024)
- usebeq.adapters.mimetypes (>= 1.0.2)
- usebeq.CommunityToolkit.Diagnostics (>= 8.2.0-build.15)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.