poznáme.it Open Source Office365 API a OpenSource

Office365 API a OpenSource

Pred 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ť.

DevOps Enginner / Online Bezpečnosť

Pre IT spoločnosť, ktorá sa venuje online bezpečnosti hľadáme do tímu DevOps Medior Engineer. Spoločnosť má 20-členný tím s...

Senior Java Consultant

Hľadáš, kam by si sa posunul? Možno ťa táto práca zaujme. Ide o Senior JAVA konzultanta v nadnárodnej IT...

Ruby on Rails Junior-Medior Developer / REMOTE

Je tvoj život príliš v “koľajniciach”? Urob si odbočku a skús sa pridať do tímu Ruby on Rails developerov.Ide...

JS Sencha Senior Developer / Homeoffice

Máš rád svoju slobodu, pracuješ na projektoch, ideálne remote? Pre medzinárodnú softwarovú spoločnosť hľadáme JS Sencha Developera.Po dvoch týždňoch...

Junior Angular Developer / REMOTE

Pre nášho partnera hľadáme ITčkára na pozíciu Angular Developer. Spoločnosť sa venuje vývoju platformy pre firmy na znižovanie nákladov...

Frontend Medior Developer

Medzinárodná IT spoločnosť, ktorá vyvíja finančný softvér.Práca je v Bratislave na TPP. Odmena sa pohybuje od 2000+ EUR.Tvoje úlohy...

.NET Core Medior Developer / REMOTE

Svoju budúcnosť máš vo svojich rukách, skús to teraz ako .NET Core developer. Ide o startup projekt, ktorý vyvíja...

GIRL ́S DAY 2020: Už po siedmy raz môžu stredoškoláčky nahliadnuť do IT firiem po celom Slovensku.

Občianske združenie Aj Ty v IT už siedmy rok prepája IT firmy a organizácie so stredoškoláčkami po...

DIGITALEUROPE: Na digitalizáciu pôjde z plánu obnovy až pätina prostriedkov. Ako zareaguje Slovensko?

Výzva v podobe zníženej globálnej konkurencieschopnosti, ako aj kríza spojená s pandémiou postavili Európu...

OpenSlava 2020 tentokrát online!

OpenSlava 2020 je 8. ročník úspešnej konferencie pre IT komunitu na Slovensku...

Čítaj ďalej:

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ť.