Я выполняю упражнение UWP в этом примере приложения , и оно работает.Я немного подправил его, потому что приложение, которое я разрабатываю, зарегистрировано в каталоге, отличном от того, к которому принадлежит моя учетная запись AAD (я гость в каталоге).Я внес следующие изменения:
PublicClientApp = PublicClientApplicationBuilder.Create(ClientId)
.WithAuthority(AzureCloudInstance.AzurePublic, TenantId)
.Build();
, где TenantId - это идентификатор каталога, в котором зарегистрировано приложение и где я являюсь гостем, а не моего домашнего каталога.
Вызов https://graph.microsoft.com/v1.0/me
, включенный в учебное пособие, работает нормально и возвращает информацию о моем профиле в приложение UWP.
Я хотел бы перетащить фотографию своего профиля в приложение, поэтому я изменил URL-адрес графика на https://graph.microsoft.com/v1.0/me/photo/$value
, но это вернуло ошибку:
{
"error": {
"code": "NoPermissionsInAccessToken",
"message": "The token contains no permissions, or permissions can not be understood.",
"innerError": {
"request-id": "xxxxxx-xxxxx-xxx-xxxx-xxxx",
"date": "2019-05-16T17:15:28"
}
}
}
Регистрация приложения имеетUser.Read
, User.ReadBasic.All
и openid
для API-интерфейса графа.
Когда я использую Graph API Explorer для перехода по URL-адресу /me/photo/$value
, он работает без проблем.
Я предполагаю, что моя проблема вызвана аутентификацией в неавторизованном каталоге, который предоставляет токен с ограниченным доступом к графику API.Мне не удалось найти какую-либо документацию по ограничениям, налагаемым на доступ к Graph API для учетных записей B2B / guest.
Я думаю, что если я захочу это сделать, мне придется установить второй сеанс входа в систему.с моим домашним каталогом (и, возможно, со второй регистрацией приложения) и используйте токен этого сеанса для доступа к моему профилю, но я ищу предложения о том, как решить эту проблему, не спрашивая пользователя войти в систему дважды.Решение с использованием MSAL было бы идеальным.