У меня есть два метода.Один получает и возвращает токен доступа на основе AzID ClientID и секретного ключа Azure для приложения, которое я зарегистрировал.Второй затем вызывает функцию Azure, однако функция возвращает ошибку:
[26.09.2009 12:18:49 PM] Создание новой команды.
[26.09.2009 12:19:00] Выполнение команды AddTeam (Failed, Id = aaecc7fa-e3bd-40e7-8be9-a 8a173cc166b)
[26.09.2009 12:19:00 PM] System.Private.CoreLib: Исключительная ситуация при выполнении функции on: AddTeam.System.Net.Http: Формат значения «Носитель» недействителен.
Любая помощь с благодарностью получена, так как она сводит меня с ума!
public static async Task<string> GetAccessToken()
{
string clientId = "clientIDFromAzure";
string clientKey = "secretKeyFromAzure";
string authContextURL = "https://login.microsoftonline.com/tennantID";
var authenticationContext = new AuthenticationContext(authContextURL);
var credential = new ClientCredential(clientId, clientKey);
var result = await authenticationContext
.AcquireTokenAsync("https://management.azure.com/", credential);
if (result == null)
{
throw new InvalidOperationException("Failed to obtain the token");
}
string token = result.AccessToken;
return token;
}
public static async Task<string> CallGraph(HttpMethod method, string uri, string body)
{
HttpClient httpClient = new HttpClient();
string graphEndpoint = "https://graph.microsoft.com/";
var request = new HttpRequestMessage(method, graphEndpoint + uri);
request.Headers.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
string accessToken = await TokenHelper.GetAccessToken();
request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer ", accessToken);
if (method != HttpMethod.Get)
request.Content = new StringContent(body, Encoding.UTF8, "applciation/json");
HttpResponseMessage response = await httpClient.SendAsync(request);
string responseBody = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode)
throw new Exception(responseBody);
return responseBody;
}