Office365 et connexion oauth2

Office365 et connexion oauth2

Ça y est, depuis la semaine dernière nous avons migrer de Gmail For Work vers Office365.

Résultat, un peu de travail à faire pour rendre compatible notre application métier GAP. En effet celle-ci permet via le protocole OAuth2 d’obtenir une interaction entre GAP et Gmail, Google Calendar, Google Contact. A savoir :

  • utilisation du smtp gmail pour avoir les emails envoyés depuis l’application dans sa boite d’envoi
  • affichage des événements du jour sur le tableau de bord
  • ajout d’événements dans ses calendriers avec envoi d’invitation automatique
  • recherche dans les contacts de Gmail pour les destinataires des emails et notification d’évènements

Ces quelques fonctionnalités permettaient d’obtenir un gain de temps non négligeable. Notamment la partie ajout d’événement au calendrier qui permettait via des champs spéciaux de faire le lien directement entre l’événement et les fiches clients de l’application.

Tout ceci fonctionnait parfaitement mais j’ai du effectuer un nouveau développement pour rendre compatible ces outils avec Office365. (la connexion avec Gmail étant toujours disponible ce qui nous permettra lors de l’ouverture de compte utilisateurs à des personnes utilisant Gmail de pouvoir bénéficier de ces fonctionnalités.)

Création d’une application pour Office365

Comme pour Gmail, l’utilisation de la connexion OAuth2 nous oblige à créer une application dans Office365. Cette partie bien que très peu technique a été relativement longue. En effet avec tous les systèmes de connexion disponible pour Office, il m’a été un peu compliqué de trouver la bonne. Chez Microsoft vous pouvez créer des applications à différents endroits :

  • Azure AD (https://manage.windowsazure.com)
  • Application Registration Portal (https://apps.dev.microsoft.com/)
  • Outlook Dev Center (https://dev.outlook.com/AppRegistration) : C’est celle-ci qui a fonctionné !

L’inscription de l’application est simple, il suffit :

  • indiquer un nom (visible par vos utilisateurs lors de la connexion)
  • définir le type d’application (App Type) en tant que Server-side Web App
  • indiquer l’url de l’écran de redirection une fois la demande d’authentification effectuée. (cette page contiendra le code d’échange du jeton)
  • la page d’accueil de votre application
  • d’indiquer les droits nécessaires à votre application

Les droits disponibles sont les suivants :

  • Email : lecture, écriture, envoi
  • Calendrier : lecture, écriture
  • Contacts : lecture, écriture

Une fois votre application inscrite, vous obtenez vos identifiants :

  • Client ID
  • Client Secret

Ne les perdez pas, dès que vous quittez la page vous ne pourrez plus les retrouver (ou alors, je n’ai pas trouvé l’endroit…) et il faudra alors créer une nouvelle application qui une fois mise en ligne nécessitera une nouvelle connexion de la part de vos utilisateurs avec leur compte Office365.

office365

Obtenir de la documentation

Pour obtenir de la documentation sur l’API Office365, rendez-vous aux adresses ci-dessous :

  • Documentation des fonctions : https://msdn.microsoft.com/en-us/office/office365/api/api-catalog
  • Documentation des éléments : https://msdn.microsoft.com/office/office365/APi/complex-types-for-mail-contacts-calendar

Créer la connexion OAuth2 sur votre application

Vous disposez maintenant de votre Client ID et votre Client Secret, il est maintenant temps de développer un peu. La connexion OAuth2 se décompose en plusieurs étape.

  1. Affichage d’un bouton de demande de connexion dans votre Application
  2. Au clic, affichage d’une popup contenant la page de demande de connexion (hébergée par Microsoft)
  3. L’utilisateur accepte la connexion de l’application à son compte Office365 (le nom de votre application ainsi que les droits nécessaires que vous avez configurés sont affichés)
  4. L’internaute est redirigé vers la page Redirect Uri qui permettra l’échange d’un code temporaire avec le jeton de connexion

Une fois la connexion réalisée, il est alors possible de se connecter (côté serveur) au compte de l’utilisateur pour réaliser les actions autorisées par l’application.

Vous trouverez ci-joint, une archive contenant les différents éléments nécessaires à un fonctionnement de base de la connexion. De nombreuses autres fonctionnalités peuvent être implémentées mais n’en n’ayant pas eu besoin, je n’ai pas pris le temps de les développer. Ce code est inspiré de la version proposée par Jason Johnston. (notamment pour a partie CURL qui provient de son exemple)

Pour utiliser l’archive :

  1. créer votre application pour obtenir voter client_id et client_secret
  2. compléter les informations dans core/config.php
  3. lancer web/test.php depuis votre navigateur
  4. autoriser votre application à accéder à votre compte
  5. utiliser les formulaires de test présents dans test.php

Attention, les fonctionnalités sont dépendantes des autorisations que vous avez accordées à celle-ci lors de la création dans  Outlook Dev Center.

Voilà une brève introduction à la connexion avec Office365, qui pourra largement être améliorée par la suite. De nombreuses fonctionnalités (tri, pagination, ajout de contact, notification d’événements, …) ne vous ont pas été présentées mais pourront être facilement mis en oeuvre grâce à l’exemple joint. (exemple loin d’être parfait je vous l’accorde mais qui permettra néanmoins de voir les possibilités de l’API Office365 avec votre application développée en PHP)

Documents liés

Commentaires

Adrien

Merci beaucoup !
Infiniment utile pour faire démarrer mon projet

2016févr.25

 Clément Levallois
 18000 Bourges
 SIRET : 81783887300021