#graph #microsoft-graph-api #microsoft-graph-sdks #microsoft-graph-mail
#График #microsoft-graph-api #microsoft-graph-sdks #microsoft-graph-mail
Вопрос:
Может успешно получать электронные письма пользователя с помощью Graph Explorer или DeviceCodeProvider. DeviceCodeProvider
IPublicClientApplication publicClientApplication = PublicClientApplicationBuilder
.Create(clientId)
.Build();
Func<DeviceCodeResult, Task> deviceCodeReadyCallback = async dcr => await Console.Out.WriteLineAsync(dcr.Message);
DeviceCodeProvider authProvider = new DeviceCodeProvider(publicClientApplication, scopes, deviceCodeReadyCallback);
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
var messages = await graphClient.Me.Messages
.Request()
.Select("sender,subject")
.GetAsync();
Не удалось получить электронные письма того же пользователя при использовании PublicClientApplicationBuilder с UsernamePasswordProvider или ConfidentialClientApplicationBuilder. Возврат графического API
Произошло исключение: CLR / Microsoft.График.ServiceException Исключение типа ‘Microsoft.График.В системе произошло исключение ServiceException.Частное.CoreLib.dll но не был обработан в пользовательском коде: ‘Code: MailboxNotEnabledForRESTAPI Сообщение: REST API еще не поддерживается для этого почтового ящика.
UsernamePasswordProvider
IPublicClientApplication clientApp = PublicClientApplicationBuilder.Create(clientId)
.WithAuthority(AzureCloudInstance.AzurePublic, tenantId)
.Build();
UsernamePasswordProvider authProvider = new UsernamePasswordProvider(clientApp, scopes);
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
String password = userPassword;
System.Security.SecureString sec_pass = new System.Security.SecureString();
Array.ForEach(password.ToArray(), sec_pass.AppendChar);
sec_pass.MakeReadOnly();
var me = await graphClient.Me.Messages.Request()
.WithUsernamePassword(userPrincipalName, sec_pass)
.Select("sender,subject")
.GetAsync();
ConfidentialClientApplicationBuilder
var scopes = new[] { "https://graph.microsoft.com/.default" };
var authority = $"https://login.microsoftonline.com/{tenantId}";
var app = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithClientSecret(clientSecret)
.WithAuthority(new Uri(authority))
.Build();
var authenticationProvider = new ClientCredentialProvider(app);
var graphClient = new GraphServiceClient(authenticationProvider);
var user = await graphClient.Users[userPrincipalName].Request().GetAsync();
var mailFolders = await graphClient.Users[user.Id].Messages.Request().GetAsync();
Созданная служба выполняется в серверной части. Из-за этого следует избегать всплывающего входа в систему. Что я сделал не так?пожалуйста, помогите. Заранее спасибо
Комментарии:
1. Вы уверены, что учетная запись, которую вы используете для входа в Graph Explorer, совпадает с учетной записью, используемой в UsernamePasswordProvider? Это рабочая учетная запись (учетная запись O365 или AAD) или личная учетная запись ( MSA )?
2. Используется та же учетная запись O365, что и tester@cortex8.onmicrosoft.com
3. Можете ли вы получить доступ к электронной почте этого почтового ящика с помощью Microsoft Graph Explorer или по-прежнему получаете ту же ошибку?
4. Я столкнулся с той же проблемой. Я пробовал много способов получить доступ: имя пользователя / пароль, поставщик кода устройства. Каждый раз я выполняю следующий код:<br/>
await graphClient.Me.Events.Request().GetAsync();
<br/> Я столкнулся с этой проблемой.<br/> Я также пытался получить доступ к приложению. В этом случае я вижу только ошибку отказа в доступе. Но через Graph Explorer все работает отлично. Так что это должно быть несоответствие конфигурации.