我已经使用WL api实现了单点登录,但我最近才意识到我需要在其上调用mobileService.login以使用Azure移动服务的良好身份验证功能。
我遵循了本教程
并添加了这段代码:
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)
如果我没有传递令牌,每次启动应用程序时都会提示我登录,这会破坏集成登录的目的。
有什么想法吗?
答案 0 :(得分:0)
要获取身份验证令牌,您需要将重定向URI传递给WL.init
的调用:
WL.init({
redirect_uri: "<< INSERT REDIRECT DOMAIN HERE >>"
});
重定向域必须与Live Connect应用程序中的域相同。