Обновить токен с помощью Restsharp - PullRequest
0 голосов
/ 16 мая 2019

В моем консольном приложении я хочу обновить токен, потому что через час токен я пытаюсь реализовать Обновление раздела токена , мой код выглядит так:

 var client = new RestClient("https://login.microsoftonline.com/common/oauth2/v2.0/token");
 var request = new RestRequest(Method.POST);
 request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
 request.AddParameter("grant_type", "refresh_token");
 request.AddParameter("refresh_token", [My_Token]);
 request.AddParameter("client_id", [My_ClientId]);
 request.AddParameter("client_secret", [My_ClientSecret]);
 request.AddParameter("scope", "offline_access");
 request.AddParameter("redirect_uri", "urn:ietf:wg:oauth:2.0:oob");
 IRestResponse response = client.Execute(request);
 var content2 = response.Content;

, ноЯ получаю ответ:

{"error": "invalid_request", "error_description": "AADSTS900144: Тело запроса должно содержать следующий параметр: 'refresh_token'. \ R \ nTrace ID: 56e56b4a-92b3-445a-9fcf-972b7a481300 \ r \ nКорреляционный идентификатор: 5cb2b84b-f128-4d4f-888c-6c9a3be1d70b \ r \ nTimestamp: 2019-05-16 13: 01: 57Z "," коды ошибок ":«отметка времени»: «2019-05-16 13: 01: 57Z», «trace_id»: «56e56b4a-92b3-445a-9fcf-972b7a481300», «correlation_id»: «5cb2b84b-f128-4d4f-888c-6c9a3be1d70b»

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

как указывает @SergeyKovalev, вам нужно добавить типы параметров в ваши параметры.

 request.AddParameter("refresh_token", [My_Token], ParameterType.GetOrPost);

Кроме того, вы не должны использовать кодировку формы для своего типа контента, попробуйте json

request.AddHeader("Content-Type", "application/json");
0 голосов
/ 16 мая 2019

PostSharp по умолчанию сериализует тело в JSON или XML. Вам нужно GetOrPost, чтобы исправить это https://github.com/restsharp/RestSharp/wiki/ParameterTypes-for-RestRequest#getorpost

 request.AddParameter("grant_type", "refresh_token", ParameterType.GetOrPost);
 request.AddParameter("refresh_token", [My_Token], ParameterType.GetOrPost);
 request.AddParameter("client_id", [My_ClientId], ParameterType.GetOrPost);
 request.AddParameter("client_secret", [My_ClientSecret], ParameterType.GetOrPost);
 request.AddParameter("scope", "offline_access", ParameterType.GetOrPost);
 request.AddParameter("redirect_uri", "urn:ietf:wg:oauth:2.0:oob", ParameterType.GetOrPost);
...