Служба единого входа Azure Mobile для учетной записи Майкрософт

Я реализовал единый вход с помощью WL API, но только недавно понял, что мне нужно вызвать mobileService.login поверх этого, чтобы использовать удобные функции проверки подлинности Azure Mobile Services.

Я следовал этому руководству

http://www.windowsazure.com/en-us/develop/mobile/tutorials/single-sign-on-windows-8-js/#add-authentication

и добавил этот кусок кода:

var login = function () {
    return new WinJS.Promise(function (complete) {
        WL.init();

        WL.login({ scope: ["wl.signin", "wl.basic", "wl.birthday", "wl.emails"] }).then(function (result) {
            session = result.session;


            WinJS.Promise.join([
                WL.api({ path: "me", method: "GET" }),
                mobileService.login("microsoftaccount", session.authentication_token)
            ]).done(function (results) {
                var profile = results[0];
                var mobileServicesUser = results[1];

                var title = "Welcome " + profile.first_name + "!";
                var message = "You are now logged in as: " + mobileServicesUser.userId;
                var dialog = new Windows.UI.Popups.MessageDialog(message, title);
                dialog.showAsync().done(complete);
            });
        }, function (error) {
            session = null;
            var dialog = new Windows.UI.Popups.MessageDialog("You must log in.", "Login Required");
            dialog.showAsync().done(complete);
        });
    });
}

однако на этой линии

mobileService.login("microsoftaccount", session.authentication_token)

мой session.authentication_token не определен. (у меня есть access_token)

Если я не передам токен, мне будет предложено войти в систему каждый раз, когда я запускаю приложение, что противоречит цели интегрированного входа.

Есть идеи?


person Eric Santos    schedule 21.02.2013    source источник


Ответы (1)


Чтобы получить токен аутентификации, вам нужно передать URI перенаправления на вызов WL.init:

WL.init({
    redirect_uri: "<< INSERT REDIRECT DOMAIN HERE >>"
});

При этом домен перенаправления должен совпадать с доменом в вашем приложении Live Connect.

person carlosfigueira    schedule 21.02.2013
comment
Спасибо! Мне также пришлось изменить вызов входа в систему, чтобы сказать mobileService.login(microsoftaccount, { authenticationToken: session.authentication_token}) - person Eric Santos; 22.02.2013