Office365 API a OpenSource

174

untitledPred pár týždňami som dostal zaujímavú úlohu. Šéf mi pridelil tiket v ktorom bolo uvedené, že chce prepojiť naše CRM s Office365. Konkrétne šlo o kalendár. Otázka bola definovaná v zmysle, vieme to spraviť?

CRM je napísané v PHP, používa MySQL a beží na Linuxe. Všetko toto je opensource. Office365 je cloudový produkt Microsoftu.

A keďže najznámejší mýt dnešných čias v znení: „Microsoft nie je priateľom s Opensource a vytvoriť nejaký gateway medzi týmito dvoma svetmi je nemožné – prípadne veľmi náročné.“, ma donútil odpovedať na šéfovu otázku stručne: „Samozrejme“.

Vyššie popísaný mýt je naozaj už len mýtom. Dávnejšie tomu tak zrejme nebolo, a to bola veľká chyba Microsoftu, že do sveta Cloudu prišiel neskoro. Ale je tomu naozaj tak aj dnes? Potvrdilo sa v tomto mojom prípade, to že lepšie neskôr ako nikdy? A má vôbec Microsoft šancu dobehnúť rozbehnutý Google a iné firmy, ktoré s cloudom začali už dávno ?

Uvidíme.

Začiatok – research – analýza

Skôr než som začal, tak som vedel, že to pôjde, a keďže som nechcel byť za idiota – tak som si povedal, že to proste spravím , nevedel som ako, ale…

Môj predpoklad bol, že strávim týždne na googli a budem hľadať články, tutoriály, videá… atď. Predpoklad bol absolútne mylný. Celý tento reserach som zvládalo za niekoľko hodín, vypracoval som analýzu, kde som popísal kde by mohol byť problém, aké máme možností a podobne.

Po odklepnutí som začal na projekte pracovať.

Problém č.1

Prvý výraznejší problém, ktorý som objavil bolo samotné rozhranie a komplexnosť portálu pre službu Office365. Ono, v tomto má Microsoft ešte stále riadne medzery… To je jednoducho bez diskusie. Prvá vec, ktorá bola treba, bolo vytvoriť aplikáciu – s prihlasovaním aj pre iné firmy do iných Active Directory (ďalej len AD) ako bolo to naše firemné.

Po pár hodinách sa to však podarilo. Keďže sme ako firma AD nemali, a ani Office365, tak som musel prejsť všetkými tými zdĺhavými krokmi registrácie, kým som sa konečne dostal k AD, ktoré sa nachádza v Azure.

S free účtom na Office365 sa nám nijakým spôsobom nepodarilo toto AD otvoriť na portále Azure, stále to pýtalo kreditky, čísla a ktovie čo ešte, a aj po zadaní platných údajov sa to celé nejak nepohlo. Platená verzia to celé automatizuje, s tým problém nebol.

Problém č.2

Žiaden problém číslo dva nebol. 😉 To som ani sám nečakal.

Implementácia

Pred implementáciou do čohokoľvek je dobré prejsť si Code Samples a API Overview (adresy dole) Možno už tam bude niečo hotové, čo vám celú implementáciu uľahčí.

Mne sa podarilo nájsť knižnicu, kde boli základné CRUD (create, read, update, delete) operácie, akurát som ju vylepšil aby pasovala nám.

Funkčnosť

Samotné fungovanie API-čka pre Office365 je v podstate rovnaké ako každé, kde sa používa OAuth2 s client_id a client_secret. V CRM kliknete na link, presmeruje vás to na stránku Microsoftu, prihlásite sa, vráti vás to na stránku aplikácia, v requeste sa vrátia prístupové kľúče. Získate Access Token, Access Token Expiration, Refresh Token a pár ďalších informácii.

Tieto údaje uložíte do DB/Session ako vám to vyhovuje.

Po tomto kroku som po kliku na kalendár v CRM stiahol údaje od poslednej synchronizácie a aktualizoval kalendár v CRM. Eventy sa vracajú s jedinečnými Idčkami, takže sa s nimi jednoducho pracuje a synchronizácia je veľmi efektívna (Google to má rovnako).

Dáta sa vracajú veľmi pekne sformátované, rozumne poskladané a bez zbytočností – väčšinu použijete, ak to chcete mať plne využité, čiže čo sa týka nejakého odpadu, tak ten tam nenájdete.

Po expirácii Access Tokenu jednoducho použijete Refresh Token (ktorý má unknown expiration – ale je riadne dlhá) a získate nové kľúče aby používateľ nemusel opätovne prihlasovať svoj účet.

Ak aj refresh token stratí platnosť, tak žiaľ je treba prihlasovať znova. V tomto blogu nebudem pridávať zdrojáky – keďže nepatria mne. Možno nakódim niekedy po večeroch nejakú sample app, kde to bude vysvetlené.

Ak by ste teda chceli nejaké code samples – ozvite sa v komentároch.

Zhrniem to

Microsoft sa snaží a maká na plné obrázky, čo sa týka začlenenia do Cloudu. Vidíme to na tom ako skvele sa dokázali vysporiadať so situáciou okolo Office-u365. Nie len v aplikácii ako Calendar. Napríklad aj napríklad taký Sharepoint má extrémne prepracované API a vytvárať doň aplikáciu je v podstate extrémne jednoduché ak teda zoberieme to, že viete ako to celé na pozadí funguje, a máte aspoň minimálnu znalosť javascriptu, či C#,VB atď..

Office365 je jednoznačne vyriešený veľmi dobre z hľadiska API. Môžete jednoducho vytvárať rôzne parametrizované dopyty a podobne, bez nejakého „rúbania dreva“ v kóde. Dáta sa vracajú v JSON stringoch. Žiadne hnusné XML… jednoducho spravili obrovský krok dopredu. Ale…

Ale je tu aj tento raz. Microsoft jednoducho nevie zvládnuť stránku UI/UX. Je to už veľmi dlhá doba, počas ktorej jednoducho Microsoft v tomto veľmi stráca. Google ho v tomto tromfne na 150%. Vytvoriť aplikáciu (s plnou registráciou, bez poplatkov – lebo ich netreba) v Googli som zvládol za 0:04:30, v Microsofte – pri free verzii sa to nepodarilo vôbec (robil som to v Edge!!) a pri platenej verzii to trvalo niečo málo cez 30 minút (keď už som vedel ako nato).

Takže áno, Microsoft maká ako sa dá – výstupy sú absolútne skvelé a presvedčivé, ale toho čo robí UI/UX by mali vyhodiť. Okamžite.

Nabudúce budem viac technický, ukážem nejaké tie zdrojáky pre IoT,Azure  v spojení so SharePoint API, zaujímavý pohľad na toto odvetvie a pár ďalších vecí.

Užitočné linky

https://msdn.microsoft.com/en-us/office/office365/howto/platform-development-overview – Office365 DEV API prehľad

https://portal.office.com/Home – administrátorská konzola pre Office365

https://github.com/OfficeDev/  – code samples

http://dev.office.com/training – videá na výučbu

Dobrý článok? Chceš dostávať ďalšie?

Už viac ako 6 200 ITečkárov dostáva správy e-mailom. Nemusíš sa báť, nie každé ráno. Len občasne.

Súhlasím so spracovaním mojich osobných údajov. ( Viac informácií. )

Tvoj email neposkytneme 3tím stranám. Posielame naňho len informácie z robime.it. Kedykoľvek sa môžeš odhlásiť.