Member 14779968 Ответов: 1

Как я могу получить свой токен oauth для генерации с помощью словаря в restsharp


Я пытаюсь получить свой токен OAuth, но получаю плохой запрос. Я пытаюсь использовать словарь для хранения значений пар ключей, но он не работает.
Я успешно отправил запрос с помощью другой библиотеки, используя HttpWebResponse, и когда я регистрируюсь в fidler, я получаю это, когда проверяю необработанный ответ..

grant_type=password&username=client@company.com&password=pass&scope=scope1&client_id=api&client_secret=rest


Но когда я использовал RestSharp и выполнил свой код, я зарегистрировался в fidler, я получаю 400 плохих запросов, и я вижу пропуск учетных данных как это. Как это можно решить??

{"grant_type":"password","username":"client@company.com","password":"pass","scope":"scope1","client_id":"api","client_secret":"rest"}


Что я уже пробовал:

Вот мой код
[Test]
public void getAccessToken1()
{
    Dictionary<string, string> formParams = new Dictionary<string, string>();
    formParams.Add("grant_type", "password");
    formParams.Add("username", "client@company.com");
    formParams.Add("password", "pass");
    formParams.Add("scope", "scope1");
    formParams.Add("client_id", "api");
    formParams.Add("client_secret", "rest");

    RestClient client = new RestClient("http://example.com/connect/token");
    RestRequest request = new RestRequest() { Method = Method.POST };
    request.AddJsonBody(formParams);
    IRestResponse token = client.Execute(request);


}

1 Ответов

Рейтинг:
9

Richard Deeming

Вы смотрите на то, что запрос- нет , не ответ.

Запрос, который завершается успешно, отправляет параметры, закодированные как application/x-www-form-urlencoded Запрос, который терпит неудачу, отправляет параметры, закодированные как JSON.

Вам нужно добавить параметры к RestRequest объект вместо использования AddJsonBody:

RestClient client = new RestClient("http://example.com/connect/token");
RestRequest request = new RestRequest() { Method = Method.POST };

request.AddParameter("grant_type", "password", ParameterType.GetOrPost);
request.AddParameter("username", "client@company.com", ParameterType.GetOrPost);
request.AddParameter("password", "pass", ParameterType.GetOrPost);
request.AddParameter("scope", "scope1", ParameterType.GetOrPost);
request.AddParameter("client_id", "api", ParameterType.GetOrPost);
request.AddParameter("client_secret", "rest", ParameterType.GetOrPost);

IRestResponse token = client.Execute(request);
Параметры Запроса | RestSharp[^]
c# - RestSharp post request - Body with x-www-form-urlencoded values - Stack Overflow[^]


Member 14779968

Спасибо