В настоящее время возникают проблемы при интеграции Microsoft Graph API в мое ASP.NET Core 2.2 веб-приложение (MVC).При этом используется «Учетные записи рабочих или учебных заведений» : «Облако - единая организация» с использованием Двухфакторная аутентификация входа в Azure .
Использование Пример кода 1 код Я пытаюсь получить запрос графа: -
https://graph.microsoft.com/v1.0/me/
, возвращающий фамилию из заголовка ответа
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я получаю сообщение об ошибке в строке кода: -
var objMessages = objGraphClient.Me.Request().GetAsync().Result;
С сообщением об ошибке: " не существуетили один из его запрашиваемых объектов ссылочных свойств отсутствует".
// #############
// Code Sample 1
// #############
// Graph Api.
string strResource = "https://graph.microsoft.com";
string SecretId = "<Secret Id>";
// Azure Ad.
Uri strInstance = new Uri("https://login.microsoftonline.com/");
string strDomain = "<Domain>.onmicrosoft.com";
string strTenantId = "<Tenant Id>";
string strClientId = "<Client Id>";
string strCallbackPath = "/signin-oidc";
// The authority to ask for a token: your azure active directory.
string strAuthority = new Uri(strInstance, strTenantId).AbsoluteUri;
AuthenticationContext objAuthenticationContext = new AuthenticationContext(strAuthority);
ClientCredential objClientCredential = new ClientCredential(strClientId, SecretId);
// Acquire Token.
AuthenticationResult objAuthenticationResult = objAuthenticationContext.AcquireTokenAsync(strResource, objClientCredential).Result;
// Get bearer token.
GraphServiceClient objGraphClient = new GraphServiceClient(new DelegateAuthenticationProvider(
async request =>
{
// This is adding a bearer token to the httpclient used in the requests.
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", objAuthenticationResult.AccessToken);
}));
// The next line produces an error :: does not exist or one of its queried reference-property objects are not present.
var objResult = objGraphClient.Me.Request().GetAsync().Result;
Debug.WriteLine($"{objResult.Surname}");
Если я изменю Пример кода 1 выше на Пример кода 2 нижепередача запроса tokenPlease (), полученного из Microsoft Graph Explorer после успешного входа в систему, работает, возвращая фамилию успешно, указывая, что их токен возможен в моем маркере Bearer: -
// #############
// Code Sample 2
// #############
// Get bearer token.
GraphServiceClient objGraphClient = new GraphServiceClient(new DelegateAuthenticationProvider(
async request =>
{
// This is adding a bearer token to the httpclient used in the requests.
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer","ERf54f2f...Etc");
}));
// The next line now works.
var objResult = objGraphClient.Me.Request().GetAsync().Result;
Debug.WriteLine($"{objResult.Surname}");
Любая помощь поэто будет высоко ценится!