Мне удалось настроить уведомление о потоковой передаче электронной почты Outlook с помощью бета-API, все заработало!
Я вернулся в проект через несколько недель, и тот же код выдает ошибку invalid_token. Это код подписки.
public async Task<StreamingSubscriptionResponse> SubscribeToEventsAsync()
{
client = new HttpClient();
var token = await office365Authentication.GetTokenForUserAsync();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
string requestUrl = "https://outlook.office.com/api/beta/me/subscriptions";
var subscriptionRequestContent = JsonConvert.SerializeObject(new SimpleStreamingEventSubscription());
var content = new StringContent(subscriptionRequestContent, Encoding.Default, "application/json");
var response = await client.PostAsync(requestUrl, content);
var convertToString = response.Content.ReadAsStringAsync().Result;
// return the object to get the SubscriptionId
return JsonConvert.DeserializeObject<StreamingSubscriptionResponse>(convertToString);
}
Вот так я получаю токен.
public async Task<string> GetTokenForUserAsync()
{
AuthenticationResult authResult;
try
{
var user = IdentityClientApp.Users.First();
authResult = await IdentityClientApp.AcquireTokenSilentAsync(_scopes, user);
TokenForUser = authResult.AccessToken;
}
catch (Exception)
{
if (TokenForUser == null || Expiration <= DateTimeOffset.UtcNow.AddMinutes(5))
{
authResult = await IdentityClientApp.AcquireTokenAsync(_scopes);
TokenForUser = authResult.AccessToken;
Expiration = authResult.ExpiresOn;
}
}
return TokenForUser;
}
- Все остальные функции графика работают нормально, например, получение электронных писем.
- Токен действителен.
Как это можно исправить, есть идеи?