Я следую примеру, представленному на графике Microsoft repository on github. В нем описывается использование DelegateAuthenticationProvider, которому нужен токен доступа. Marc LaFleur's primer on auth flow указал способ получить токен доступа, который я объединил с guidance при выполнении работы службы аутентификации.InvalidAuthenticationToken при попытке вызвать Microsoft Graph client
Даже если я получаю то, что , как представляется, является допустимым маркеров доступа, когда я выполняю команду с помощью клиента графа, я получаю ServiceException от Microsoft Graph о том,
«{ Код: InvalidAuthenticationToken сообщение : Ошибка проверки доступа к токенам. Внутренняя ошибка } «
Я не видел никакой другой внутренней ошибки.
Что я делаю неправильно?
Это код, который я придумал:
var clientId = "[app-guid]";
var clientSecret = "[secret-from-app-dashboard]";
var resource = "[app-guid]";
var baseUrl = "https://login.microsoftonline.com";
var loginUrl = "/[tenant guid]/oauth2/token";
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(baseUrl);
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("grant_type", "client_credentials"),
new KeyValuePair<string, string>("client_id", clientId),
new KeyValuePair<string, string>("client_secret", clientSecret),
new KeyValuePair<string, string>("resource", resource)
});
var result = client.PostAsync(loginUrl, content).Result;
string resultContent = result.Content.ReadAsStringAsync().Result;
var json = JObject.Parse(resultContent);
accessToken = (string)json["access_token"];
}
var header = new AuthenticationHeaderValue("Bearer", accessToken);
var graphserviceClient = new GraphServiceClient(
new DelegateAuthenticationProvider(
(requestMessage) =>
{
requestMessage.Headers.Authorization = header;
return Task.FromResult(0);
}));
try
{
var users = await graphserviceClient.Users.Request().GetAsync();
var user = users.First();
}
catch (Microsoft.Graph.ServiceException servex)
{
Console.WriteLine(servex);
}
Спасибо за это, но теперь я получаю это в своем исключении: «Идентификатор вызывающего приложения не может быть установлен». Для возвращаемого accessToken это выглядит нормально, так как оно содержит имя аутентифицируемого приложения. – Irwin
Я смог воспроизвести эту проблему в Postman, но не в приложении, зарегистрированном по правильному URL-адресу. Я бы дважды проверял вашу регистрационную информацию, особенно зарегистрированные вами URL-адреса. Вы зарегистрировались на портале apps.dev.microsoft.com или с помощью Azure AD? Я также удостоверился, что ваши разрешения установлены правильно. Необходимо настроить как минимум Microsoft Graph и Windows Azure Service Management. –