Conectar los calendarios de Google y Microsoft a través de OAuth, en la aplicación que el buzón ya utiliza

FeatureEmailService
Se descapó
5 de septiembre de 2026 a las 6:31 UTC
Autor
Kamo
Compromit
cbc238a

El botón Connect de la pestaña CalDAV/CardDAV a través del botón OAuth levantó una alerta diciendo que el el flujo no se implementó y para configurar credenciales a través de la API. Ahora es ejecuta una conexión real, y la restricción que dio forma es que un OAuth redireccione URI vive en una consola THIRD PARTY: Google y Entra cada uno sostiene exactamente uno dirección por registro de la aplicación, mecanografiado por quien la registró, por lo que un segundo el flujo no puede tener una segunda llamada de reserva. Por lo tanto, ambos fluyen tierra en la dirección ya registrada y se les dice aparte por un marcador de "flow" dentro de Estado -- OAuthFlowKind, ausente que significa EMAIL, por lo que las llamadas en vuelo siguen completando dónde siempre lo hicieron. Sin cambio de consola, sin nueva ruta de entrada, sin nueva sesión exención para una vía pública. Lo que el nuevo flujo comparte con el flujo de buzón que comparte deliberadamente: - El registro de la aplicación. GroupwareOAuthService pide PlatformOAuthClientResolver la misma pregunta que la pestaña Configuración del proveedor: el OWN Google de la organización o aplicación Entra si registró una allí, la aplicación de la plataforma de Kamo... credenciales ingresadas una vez sirven a ambos, y un org que no tiene ninguno de los dos se le dice en lugar de enviar a una pantalla de consentimiento que rechaza a un cliente en blanco. - El URI de redireccionar, leer de ************* en lugar de rehagado. Una copia, porque un segundo sería una redirección. para alguien mover una llamada de reserva, y ya está cubierto por OAuthRedirectUriTest contra la mesa compartida de OAuthCallbackPaths. Lo que no comparte es la subvención. Pide Calendario y Contactos más bien que Gmail y el Admin SDK, y almacena sus fichas en el org's ContactIntegración en lugar de su fila de proveedor de correo electrónico, así que conectar calendarios no puede perturbar un buzón de trabajo. Lectura de esscribir alcances, no .readonly: doble sincronización es un interruptor que el miembro flips después de consentir, y los alcances se fijan en el consentimiento. La conexión se demuestra antes de reportar el éxito - se lee la cuenta que acceso y lista un calendario. Una subvención que no puede leer calendarios, o que volvió sin refrescar, se almacena y marca con qué hacer al respecto; ambos son invisibles hasta que una sincronización se corrica días después. Credenciales están escritos en la forma que los cuatro refrescos existentes ya leídos por clave de cuerda (accessToken / refreshToken / tokenExpiry as epoch millis / clientId / clienteSecret / inquilinoId), por lo que una conexión permanece viva sin más trabajo, y GroupwareOAuthServicePines de atesados esos nombres: cambiar el nombre compila, despliega, conecta, y deja de trabajar una hora después. Junto a ello, tres correcciones en la misma superficie: - GET /settings/integrations/org devolvió la entidad, que puso las org's Creencias cifradas de AES en una mancha de respuesta, un caché del navegador y cada uno registro proxy entre aquí y el miembro, en cada carga de una pantalla que nunca Lee el campo. Ambos endpoints de org ahora devuelven una visión explícita de la fila, informar sólo WHETHER una credencial está en el archivo. - aplicarConfig read "bidirectional" mientras que cada pantalla de configuración siempre ha enviado El interruptor de dos vías nunca persistió. Acepta ambas cosas. - despeje de OrgCredentials, por lo que desconecta olvida la subvención sin restablecer el Opciones de sincronización que el miembro eligió, que eliminan OrgIntegration. La sincronización de los calendarios y los contactos en sí no ha cambiado y sigue sin construir: Google y Microsoft GroupwareProviders son labios delegando al DB local, ProveedorLa Registry se une a KamoGroupwareProvider independientemente del tipo de proveedor, y Los trabajos de sincronización de DaemonService sólo golpean una sincroníaToken. Esto aterriza la credencial esos lo necesitará, y nada lo lee todavía.

Todos los cambios

Como lo que ves enviaste?

Cada una de estas actualizaciones aterriza en su espacio de trabajo automáticamente. Empieza gratis y verlo crecer semana tras semana.

Arranzar gratis para siempreVer Precios