0

我已经使用 WL api 实现了单点登录,但直到最近我才意识到我需要在此基础上调用 mobileService.login 才能使用 Azure 移动服务的良好身份验证功能。

我跟着这个教程

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)

如果我不通过令牌,每次启动应用程序时都会提示我登录,这违背了集成登录的目的。

有任何想法吗?

4

1 回答 1

0

要获取身份验证令牌,您需要将重定向 URI 传递给对的调用WL.init

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

重定向域必须与 Live Connect 应用程序中的域相同。

于 2013-02-21T23:03:20.067 回答