Можете ли вы указать мне правильный путь и набор параметров, чтобы:
Сделайте запрос авторизации с помощью PKCE на мою конечную точку идентификации (https: //.../login) в Postman. В приложениях есть список параметров, которые отправляются. в качестве значения grant_type я использую - ›authorization_code К сожалению, я получаю неверный запрос Invalid_grant в Postman
сделать запрос токена доступа. В этом запросе я получаю неверный запрос. Думаю, мне не хватает токена обновления параметра, но я не знаю, как его получить / сгенерировать: < img src = "https://i.stack.imgur.com/JxUuU.jpg" alt = "введите описание изображения здесь" />
Я написал код функции Azure для запроса токена доступа, к сожалению, я получаю {error: invalid_request} от конечной точки токена. Вот мой код, вы можете мне сказать, что я делаю не так?
[FunctionName("GetAccessToken")]
public async Task<IActionResult> GetAccessToken(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req,
ILogger log)
{
try
{
log.LogInformation("C# HTTP trigger function ''GetAccessToken'' processed a request.");
string clientSecret = "some secret";
string accessToken = "";
RequestAccessToken rT = new RequestAccessToken();
rT.Code = req.Form["code"];
rT.RedirectUri = req.Form["redirect_uri"];
rT.GrantType = req.Form["grant_type"];
rT.ClientId = req.Form["client_id"];
rT.CodeVerifier = req.Form["code_verifier"];
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("https://<access_token_endpoint_base_uri>");
client.DefaultRequestHeaders
.Accept
.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));//ACCEPT header
var body = new { EntityState = new {
code = rT.Code,
redirect_uri = rT.RedirectUri,
grant_type = rT.GrantType,
client_id = rT.ClientId,
client_secret = clientSecret,
code_verifier = rT.CodeVerifier
} };
var result = await client.PostAsJsonAsync(
"/login",
body);
accessToken = await result.Content.ReadAsStringAsync();
}
return new OkObjectResult(accessToken);
}
catch (Exception ex)
{
log.LogInformation(ex.ToString());
return new ObjectResult(ex.ToString()) { StatusCode = 500 };
}
}