0

我正在开发 Windows Phone 8 应用程序,并且在第一次运行时我让用户从他的 Microsoft 帐户进行身份验证。用户凭据非常节省,但每次我运行应用程序时都会出现权限屏幕(“让此应用程序访问您的信息”)。

如何仅保存一次选择并显示权限屏幕(第一次运行应用程序)?

代码片段:

private LiveConnectSession _session;
    private async Task<Users> Authenticate()
    {

        var liveIdClient = new LiveAuthClient("XXXXXXXXXXXXXXX");

        while (_session == null)
        {
            var result = await liveIdClient.LoginAsync(new[]
                                                           {
                                                               "wl.signin",
                                                               "wl.offline_access"
                                                           });

            if (result.Status == LiveConnectSessionStatus.Connected)
            {
                _session = result.Session;
                var client = new LiveConnectClient(result.Session);
                var meResult = await client.GetAsync("me");
                var user = await App.MobileService.LoginAsync(result.Session.AuthenticationToken);
                return new Users
                {
                    UserName = user.UserId,
                    RealName = string.Format("{0} {1}", meResult.Result["first_name"], meResult.Result["last_name"]),
                    TimeStamp = DateTime.Now,
                    IsAuthorised = false
                };
            }
            else
            {
                _session = null;
                MessageBox.Show("You must log in.", "Login Required", MessageBoxButton.OK);
            }
        }
        return null;
    }

在构造函数(public MainPage())中:

(DataContext as MainViewModel).User = await Authenticate();
4

2 回答 2

0

您的应用需要 wl.offline_access 范围,以免一遍又一遍地请求身份验证。

wl.offline_access

http://msdn.microsoft.com/en-us/library/live/hh243646.aspx#wlofflineaccess

范围和权限(实时连接)

http://msdn.microsoft.com/en-us/library/live/hh243646.aspx

这是我用来发现offline_access的帖子

http://dotnet.dzone.com/articles/things-know-about-uploading?mz=27249-windowsphone7

于 2013-03-05T16:22:49.383 回答
-1

该代码不适用于我在模拟器上的真实帐户。

它在其他帐户的设备和模拟器上运行良好。

于 2014-01-29T14:14:34.863 回答