我需要在我的Xamarin UWP应用中使用Windows身份验证。如何在应用程序中访问当前登录的用户详细信息。需要检索当前登录Windows的用户Active Directory登录ID。
我已经尝试过以下解决方案,它为我提供了空的结果。
How can I get username or id of currently logged in user in UWP App
感谢你的帮助......
答案 0 :(得分:1)
如果您尚未在Package.appxmanifest中为您的应用添加User Account Information功能,则您无权访问用户帐户信息。
出于其他原因,如果您使用Hotmail进行身份验证,则需要KnownUserProperties.FirstName
和KnownUserProperties.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详细介绍了如何完成此操作。