I am trying to get an accesstoken OAuth2 but I am getting this error:
'{"error":"invalid_request","error_description":"AADSTS900144: The request body must contain the following parameter: 'grant_type'. Trace ID: dd0ee743-c11e-48cc-b67f-91bd771a0500 Correlation ID: c7505426-844c-4dab-a2d9-9744a1af1b1a Timestamp: 2023-12-11 23:00:02Z","error_codes":[900144],"timestamp":"2023-12-11 23:00:02Z","trace_id":"dd0ee743-c11e-48cc-b67f-91bd771a0500","correlation_id":"c7505426-844c-4dab-a2d9-9744a1af1b1a","error_uri":"https://login.microsoftonline.com/error?code=900144"}'
Here is my code:
HttpHeadersContent.TryAddWithoutValidation('Cache-Control', 'no-cache');
HttpHeadersContent.Add('Ocp-Apim-Subscription-Key', SubKeyTest);
HttpHeadersContent.TryAddWithoutValidation('Content-Type', 'application/x-www-form-urlencoded');
HttpHeadersContent.Add('grant_type', 'client_credentials');
HttpClient.DefaultRequestHeaders().Add('grant_type', 'client_credentials');
HttpClient.DefaultRequestHeaders().Add('Ocp-Apim-Subscription-Key', SubKeyTest);
HttpClient.DefaultRequestHeaders().Add('client_secret', ClientSecret);
HttpContent.GetHeaders(HttpHeadersContent);
Is there something I am not doing right?
The error mentions that it expects the grant type in body instead of header. Probably as
FormUrlEncodedContent
. you can do something like this:You can add more items to
dict
if needed.