在Xamarin UWP应用程序中,如何获取当前Windows登录用户详细信息

时间:2018-05-09 06:20:09

标签: xamarin uwp adal xamarin.uwp

我需要在我的Xamarin UWP应用中使用Windows身份验证。如何在应用程序中访问当前登录的用户详细信息。需要检索当前登录Windows的用户Active Directory登录ID。

我已经尝试过以下解决方案,它为我提供了空的结果。

How can I get username or id of currently logged in user in UWP App

感谢你的帮助......

2 个答案:

答案 0 :(得分:1)

如果您尚未在Package.appxmanifest中为您的应用添加User Account Information功能,则您无权访问用户帐户信息。

enter image description here

出于其他原因,如果您使用Hotmail进行身份验证,则需要KnownUserProperties.FirstNameKnownUserProperties.LastName来获取您的帐户名称。

private async void GetUser()
{
    IReadOnlyList<User> users = await User.FindAllAsync();

    var current = users.Where(p => p.AuthenticationStatus == UserAuthenticationStatus.LocallyAuthenticated &&
                                p.Type == UserType.LocalUser).FirstOrDefault();

    // user may have username
    var data = await current.GetPropertyAsync(KnownUserProperties.AccountName);
    string displayName = (string)data;

    // authinticated using hotmail 
    if (String.IsNullOrEmpty(displayName))
    {

        string a = (string)await current.GetPropertyAsync(KnownUserProperties.FirstName);
        string b = (string)await current.GetPropertyAsync(KnownUserProperties.LastName);
        displayName = string.Format("{0} {1}", a, b);
    }
}

请注意,上述代码仅适用于UWP原生项目,并且无法直接在pcl中使用,您需要通过DependencyService创建GetUser方法。

<强>更新

如果您已获得ADAL授权,则可以使用AcquireTokenSilentAsync方法从令牌缓存中静默获取信息,以获取更多引用this

答案 1 :(得分:0)

这很简单。您应该使用Windows.System.User在平台特定级别上执行此操作,以检索当前用户的信息。 Here is a post详细介绍了如何完成此操作。