Introducción a la Biblioteca OAuth2 para Google Apps Script
La biblioteca OAuth2 para Google Apps Script simplifica la autenticación con servicios de terceros. Permite a los desarrolladores conectar aplicaciones de Google Apps Script con APIs externas usando el protocolo OAuth2, reduciendo la complejidad del flujo de autorización.
Características Clave y Beneficios
- Creación rápida de instancias de servicio con métodos intuitivos
- Soporte integrado para más de 40 plataformas, incluyendo GitHub, Twitter y Dropbox
- Gestión automática de tokens, con almacenamiento y renovación seguros
- Configuración flexible para personalizar endpoints, scopes y parámetros
Implemantación Paso a Paso
Adición de la Biblioteca al Proyecto
En el editor de Google Apps Script, navegue a "Recursos" > "Bibliotecas" e introduzca la clave del proyecto. Seleccione la versión más reciente y confirme la incorporación.
Configuración de un Servicio OAuth2
Por ejemplo, para integrar GitHub, defina una función que inicialice el servicio:
function obtenerServicioGitHub() {
return OAuth2.createService('GitHub')
.setAuthorizationBaseUrl('https://github.com/login/oauth/authorize')
.setTokenUrl('https://github.com/login/oauth/access_token')
.setClientId('ID_CLIENTE_AQUI')
.setClientSecret('SECRETO_CLIENTE_AQUI')
.setCallbackFunction('gestionarCallbackAuth')
.setPropertyStore(PropertiesService.getUserProperties())
.setScope('repo');
}
Manejo de la Respuesta de Autorización
Implemente la función de callback para procesar la autorización:
function gestionarCallbackAuth(solicitud) {
var servicio = obtenerServicioGitHub();
var autorizado = servicio.handleCallback(solicitud);
if (autorizado) {
return HtmlService.createHtmlOutput('Autenticación completada con éxito.');
} else {
return HtmlService.createHtmlOutput('Error en la autorización.');
}
}
Obtención del URL de Autorización
Genere el enlace para redirigir al usuario al flujo de login:
function enlaceAutorizacion() {
var servicio = obtenerServicioGitHub();
return servicio.getAuthorizationUrl();
}
Estrategias de Almacenamiento de Tokens
Elija el método de almacenamiento según el alcance de la aplicación:
PropertiesService.getUserProperties()para datos específicos de usuarioPropertiesService.getScriptProperties()para configuraciones globales del scriptPropertiesService.getDocumentProperties()para vincular tokens a documentos
Manejo de Tokens Expirados
La biblioteca gestiona renovaciones automáticamente, pero puede verificar el acceso manualmente:
var servicioActual = obtenerServicioGitHub();
if (servicioActual.hasAccess()) {
// Ejecutar llamadas a la API
} else {
var urlAuth = servicioActual.getAuthorizationUrl();
// Redirigir al usuario para reautenticación
}
Ejemplos de Servicios Compatibles
La biblioteca incluye soporte para múltiples plataformas:
- Redes sociales: Twitter, Facebook, LinkedIn
- Herramientas de desarrollo: GitHub, Jira, StackOverflow
- Almacenamiento en la nube: Dropbox, FirebaseDB
- Productividad: Google, Notion, ZohoCRM
Configuraciones Avanzadas
Parámetros Personalizados
Añada parámetros adicionales a las solicitudes OAuth:
.setParam('response_type', 'code')
.setParam('state', 'valorUnico123')
Uso con Cuentas de Servicio
Para APIs de Google, configure una autenticación basada en servicios:
function servicioCuentaGoogle() {
return OAuth2.createService('GoogleServiceAccount')
.setTokenUrl('https://accounts.google.com/o/oauth2/token')
.setPrivateKey(clavePrivada)
.setIssuer(correoElectronico)
.setSubject(usuarioObjetivo)
.setScope('https://www.googleapis.com/auth/drive');
}
Solución de Problemas Comunes
Fallas en la Autorización
- Verifique que el ID y secreto del cliente sean correctos
- Asegúrese de que la URI de redirección coincida con la configurada en el proveedor de servicios
- Confirme que los scopes solicitados sean válidos
Problemas de Almacenamiento de Tokens
Si los tokens no se guardan, pruebe cambiar el método de almacenamiento o revise los permisos del script.