sobota, 1 grudnia 2012

Exchange Online - tworzenie połączenia do EWS

Poprzedni post omawiał w jaki sposób otrzymać link do webserwisu Exchange Online (EWS).
Po uzyskaniu linku możemy przystąpić do połączenia się z EWS-em. Aby było to możliwe potrzebujemy odpowiedniej biblioteki. Należy najpierw pobrać ze strony http://www.microsoft.com/en-us/download/details.aspx?id=35371 EWS Managed API 2.0.
Po zainstalowaniu,  w folderze Program Files\Microsoft\Exchange\Web Services\2.0 znajdziemy bibliotekę Microsoft.Exchange.WebServices.Auth którą należy dołączyć do tworzonego projektu.

Kod tworzenia połączenia:

Code:
            var service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
            service.Credentials = new WebCredentials(user, password);
            service.TraceEnabled = true;
            service.Url = new Uri("https://nasz_link/EWS/Exchange.asmx");

Jeżeli chodzi o konfigurację samego połączenia potrzebujemy login oraz hasło użytkownika, na którego konto chcemy się zalogować. Potrzebny jest także adres EWS, który pokazałem jak pobrać w poprzednim artykule.

Powyższy kod jest całkowicie poprawny, jednak ma mały haczyk. Otóż po jego wykonaniu nie otrzymamy informacji o tym czy użytkownik poprawnie zalogował się na swoje konto. Można sobie wyobrazić sytuację, w której użytkownik pracuje w aplikacji a przy próbie zapisu pracy następuje awaria programu na skutek niepoprawnego logowania.
Walidacja logowania niestety nie jest dostarczana z pudełka - być może coś pominąłem podczas szukania rozwiązania tego problemu, jednak jedyne co możemy zrobić to pobrać dane do których użytkownik ma prawa. W moim przypadku próbuję pobrać listę maili. Jeżeli nie zostanie rzucony wyjątek HTTP 401 ((401) Unauthorized) znaczy że udało się poprawnie zalogować:

Code:
            var service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
            service.Credentials = new WebCredentials(user, password);
            service.TraceEnabled = true;
            service.Url = new Uri("https://pod51013.outlook.com/EWS/Exchange.asmx");
            FindItemsResults<Item> findItemsResults = service.FindItems(WellKnownFolderName.Inbox, new ItemView(10));

Brak komentarzy:

Prześlij komentarz