Проблемы с получением сообщений Команд с помощью Графика Office365.
Я получаю токен доступа, используя
string signedInUserID = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
if (HttpContext.Current.Application.Count > 0)
{
signedInUserID = HttpContext.Current.Application.Keys[0].Replace("_TokenCache", "");
}
HttpContextBase httpContextBase = HttpContext.Current.GetOwinContext().Environment["System.Web.HttpContextBase"] as HttpContextBase;
ADALTokenCache tokenCache = new ADALTokenCache(signedInUserID);
var cachedItems = tokenCache.ReadItems(); // see what's in the cache
AuthenticationContext authContext = new AuthenticationContext(Authority, tokenCache);
ClientCredential clientCredential = new ClientCredential(clientId, appKey);
string userObjectId = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
UserIdentifier userId = new UserIdentifier(userObjectId, UserIdentifierType.UniqueId);
try
{
AuthenticationResult result = await authContext.AcquireTokenAsync(graphResourceID2, clientCredential).ConfigureAwait(false);
return result.AccessToken;
}
Затем, чтобы получить сообщения Команд, я использую это в качестве конечного:
https://graph.microsoft.com/beta/teams/{teamID}/channels/{channelid}/messages
Используя токен доступа, полученный сверху, и конечной точкой я делаю следующее:
using (var client = new HttpClient())
{
using (var request = new HttpRequestMessage(HttpMethod.Get, endpoint))
{
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
using (var response = await client.SendAsync(request).ConfigureAwait(false))
{
if (response.IsSuccessStatusCode)
{
var json = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
var result = JsonConvert.DeserializeObject<GraphOdataResponse>(json);
myTeamsMessages = result.messages.ToList();
}
return myTeamsMessages;
}
}
}
Каждый раз, когда он работает с любой из конечных точек бета-версии, он выдает несанкционированную ошибку, но с конечными точками v1.0 он работает нормально.
Чего мне не хватает, я предполагаю, что это как-то связано с токеном доступа, но все проведенные исследования не устранили проблему.