Connectez les calendriers Google et Microsoft sur OAuth, sur l'application la boîte aux lettres utilise déjà

FeatureEmailService
Expédié
5 septembre 2026 à 06:31 UTC
Auteur
Kamo
Commite
cbc238a

L'onglet CalDAV/CardDAV se connecte via le bouton OAuth a soulevé une alerte disant le le flux n'a pas été mis en œuvre et pour configurer les justificatifs d'identification par l'intermédiaire de l'API. Il est maintenant fait fonctionner une connexion réelle, et la contrainte qui l'a façonné est qu'une redirection d'OAuth URI vit dans la console d'un TID-PARTY: Google et Entra chacun en détiennent exactement un Adresse par inscription d'application, dactylographié par celui qui l'a enregistrée, donc une seconde le flux ne peut pas avoir un deuxième rappel. Les deux flux débarquent donc sur l'adresse déjà enregistré et sont racontés séparément par un marqueur de flux à l'intérieur de l'État. OAuthFlowKind, en l'absence signifiant EMAIL donc les rappels en vol continuent à terminer où Ils l'ont toujours fait. Pas de changement de console, pas de nouvelle route de passerelle, pas de nouvelle session l'exemption pour un parcours public. Ce que le nouveau flux partage avec le flux de la boîte aux lettres qu'il partage délibérément : - L'enregistrement de l'application. GroupwareOAuthService demande PlatformOAuthClientResolver la même question que l'onglet Configuration du fournisseur demande -- le PROPRIÉTÉ de l'organisation Google ou Entra app si elle en a enregistré un là-bas, sinon l'application de la plate-forme de Kamo -- donc les références entrées une fois servent les deux, et un og qui n'a pas été dit. plutôt qu'il s'est envoyé à un écran de consentement qui rejette un client blanc. - L'URI de redirection, lu à partir de - plutôt que retraités. Un exemplaire, parce qu'une seconde serait une rédirection-uri-mismatch en attente pour que quelqu'un puisse déplacer un rappel, et il est déjà couvert par OAuthRedirectUriTest contre la table OAuthCallbackPaths partagée. Ce qu'elle ne partage pas, c'est la subvention. Il demande plutôt un calendrier et des contacts que Gmail et l'Admin SDK, et stocke ses jetons sur l'ordre ContactIntegration plutôt que sa ligne de fournisseur de courrier électronique, donc connecter des calendriers ne peut pas perturber une boîte aux lettres de travail. Lunettes de lecture, non .readonly: syne bidirectionnelle est un changement de basculement par le membre après consentement, et les limites sont fixées avec le consentement. Le lien prouve avant le succès de l'établissement de rapports -- il lit le compte que accordé et liste un calendrier. Une subvention qui ne peut pas lire des calendriers, ou qui est revenu sans jeton de rafraîchissement, est stocké et signalé avec ce qu'il faut faire les deux sont invisibles jusqu'à ce qu'une course de synchronisation quelques jours plus tard. Pouvoirs sont écrits dans la forme les quatre rafraîchissements existants déjà lus par clé à cordes (AccessToken / racunissageJeton / jetonExpiry as epth millis / clientId / clientSecret / locataireId), donc une connexion reste en vie sans autre travail, et GroupwareOAuthServiceTest brolles ces noms: renommant un compilation, se déploie, se connecte et s'arrête de travailler une heure plus tard. Parallèlement, trois corrections dans la même surface: - GET/réglages/intégrations/org restitué à l'entité, ce qui met l'ordonnance Des identifiants cryptés AES blob dans un corps de réponse, un cache de navigateur et tous les un log de proxy entre ici et le membre, sur chaque chargement d'un écran qui n'a jamais lit le champ. Les deux points d'extrémité d'org renvoient maintenant une vue explicite de la ligne, En l'absence d'un avis seulement, un certificat figure dans le dossier. - appliquerConfig lire « bidirectionnel » alors que chaque écran de réglages a toujours été envoyé «bidirectionalSync», donc l'interrupteur à deux voies n'a jamais persisté. Accepte les deux. - clearOrgCredentials, donc Disconnect oublie la subvention sans réinitialiser synchronisation options que le membre choisit -- ce qui supprimerOrgInteg serait. Les calendriers et contacts se synchronisent lui-même est inchangé et toujours non construit: Google et Microsoft GroupwareProviders sont des stubs déléguant à la DB locale, FournisseurRegistry lie KamoGroupwareProvider quel que soit le type de fournisseur, et Les tâches de synchronisation de DaemonService ne se coupent qu'un jeton sync. Cela débarque l'identifiant qui n'en aura besoin que, et rien ne le lit encore.

Tous les changements

Comme ce que tu vois expédier ?

Chacune de ces mises à jour atterrit automatiquement dans votre espace de travail. Commencez gratuitement et regardez-le grandir semaine après semaine.

Commencez gratuitement pour toujoursPrix de visualisation