Я успешно получил токен Microsoft Graph с clientCredentials, но когда я пытаюсь запросить маршрут getActivitiesByInterval (для сайта SharePoint), я получаю HTTP 500:
"code": "generalException",
"message": "The remote server returned an error: (500) Internal Server Error."
У зарегистрированного приложения естьследующие права (Приложение) на Microsoft Graph (Files.Read.All, Files.ReadWrite.All, Sites.Read.All, Sites.ReadWrite.All, User.Read.All).Если я выполняю точно такой же запрос с токеном, полученным из обозревателя графиков, я получаю HTTP 200 с содержимым, которое я запрашиваю.
Используемый токен кажется правильным, поскольку я могу получать пользователей из Microsoft Graph безс HTTP 500.
Код, который я использую для выполнения запроса, следующий (это функция Azure с привязкой Microsoft Graph для получения токена):
[FunctionName("SharepointSitesViews")]
public static async Task Run([TimerTrigger("0 */5 * * * *", RunOnStartup = true)]TimerInfo myTimer,
[Token(Identity = TokenIdentityMode.ClientCredentials, IdentityProvider ="AAD", Resource = "https://graph.microsoft.com")] string graphToken,
ILogger log)
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", graphToken);
var response = await client.GetAsync("https://graph.microsoft.com/beta/sites/****MySiteId*****/getActivitiesByInterval?startDateTime=2018-09-12T09:59:19.817Z&endDateTime=2018-12-11T00:00:00.000Z&interval=day");
var me = await response.Content.ReadAsStringAsync();
}
То же самоекод с URL "https://graph.microsoft.com/v1.0/users" возвращает 200.
Я также воспроизвел ту же ошибку 500, используя почтальон:
GET /beta/sites/****MySiteId****/getActivitiesByInterval?startDateTime=2018-09-12T09:59:19.817Z& endDateTime=2018-12-11T00:00:00.000Z& interval=day HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer *****myToken****
cache-control: no-cache