Если вы не добавили Информация об учетной записи пользователя к своему приложению в Package.appxmanifest, у вас не будет разрешения на доступ к информации об учетной записи пользователя.
По другим причинам, если вы аутентифицировались с помощью 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, вам нужно создать метод GetUser
через DependencyService
.
Update
Если вы авторизовались с помощью ADAL, вы можете использовать метод AcquireTokenSilentAsync
для получения информации из кэша токена в режиме без вывода сообщений, подробнее см. this .