Som nævnt i forrige indlæg, får man authentication med Facebook, Twitter, Google og Microsoft med i Azure Mobile Services client API’en.  Det hele foregår i gennem det client objekt, vi fik fat i ved at inkludere Azure client JavaScript API’en. 

På min knockout.js viewmodel har jeg kode, der meget ligner følgende:

    self.login = function (providerName) {
        self.errorMessage('');
        client.login(providerName).then(self.afterLogin, function (error) {
            self.errorMessage(error);
        });
    } 

I HTML’en kalder jeg login funktion (gennem knockout.js bindings), hvor jeg angiver providernavnet (fremhævet):

    <ul class="dropdown-menu">
        <li><a data-bind="click: login.bind($data, 'facebook')" href="#">Facebook</a></li>
        <li><a data-bind="click: login.bind($data, 'microsoftaccount')" href="#">Microsoft</a></li>
        <li><a data-bind="click: login.bind($data, 'google')" href="#">Google</a></li>
    </ul>

Det vigtige her er kaldet til client.login(providerName). Det geniale er, at samme kode bruges til alle fire authentication providers: Facebook, Twitter, Google og Microsoft.  Jeg skal bare angive providername, som kan være “facebook”, “google”, “twitter” eller “microsoftaccount”. 

Bemærk at authentication kræver, at man først reigstrerer sig hos de fire udbydere, men det er ret nemt, og Microsoft har lavet en beskrivelse af processen.

Desværre virker ovenstående login metode ikke på Windows Phone.  Det er uheldigt, da et af målene netop var at gøre styrdindiabetes.dk tilgængeligt på mobile platforme.  Problemet er, at IE på Windows Phone ikke understøtter popups, hvilket bruges i login processen.  Jeg har indtil videre valgt at Windows Phone må sejle sin egen sø.  Hvis tiden tillader det, kan der eventuelt komme en Windows Phone app til styrdindiabetes.dk.  Der er muligvis også et workaround på StackOverflow, men jeg har ikke prøvet det, og det løser kun problemet for Facebook.  I så fald skulle jeg lave tilsvarende workarounds for de andre udbydere.  Det er jeg ikke interesseret i at bruge tid på, og hele øvelsen med at bruge Azure Mobile Services skulle netop være at give høj produktivitet uden alt for meget fnidder.

Kommentarerne er lukkede