Я реализовал единый вход с помощью WL API, но только недавно понял, что мне нужно вызвать mobileService.login поверх этого, чтобы использовать удобные функции проверки подлинности Azure Mobile Services.
Я следовал этому руководству
и добавил этот кусок кода:
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)
Если я не передам токен, мне будет предложено войти в систему каждый раз, когда я запускаю приложение, что противоречит цели интегрированного входа.
Есть идеи?