Restsharp и почтальон - PullRequest
       44

Restsharp и почтальон

0 голосов
/ 04 июля 2019

Я пытаюсь получить токен доступа OAuth2 от ZOHO, используя код RestSharp. Симуляция Почтальона работает правильно, поэтому я знаю, что в моем коде чего-то не хватает.

Я всегда получаю статус результата «неверный идентификатор клиента». Однако в Postman это работает и возвращает код, когда я нажимаю «Получить новый токен доступа». У меня есть те же элементы, что и на вкладке авторизации Почтальона (client_id, client_secret и т. Д.). В «Почтальоне» для «Тела» установлено значение «нет», и нет никаких параметров или заголовков. Единственная разница между моим кодом и почтальоном в том, что почтальону требуется URL обратного вызова. Мой код пытается получить код, используя «self-client», который обходит URL обратного вызова.

Я пробовал несколько различных альтернатив вызову запроса, включая ParameterType.Body и ParameterType.GetOrPost. GetOrPost - это то же самое, что и форма?

client = New RestClient(ZOHO_API_URL)
request = New RestRequest(TokenUrl, Method.POST)
request.AddHeader("content-type", "application/x-www-form-urlencoded") ' also tried: "application/json")
request.AddParameter("grant_type", "authorization_code", 
    ParameterType.GetOrPost)
request.AddParameter("client_id", Client_ID, ParameterType.GetOrPost)
request.AddParameter("client_secret", Client_Secret, 
    ParameterType.GetOrPost)
request.AddParameter("code", Grant_Token, ParameterType.GetOrPost)
response = client.Execute(request)

Это переведенный код почтальона для RestSharp:

var client = new RestClient("http://");
var request = new RestRequest(Method.POST);
request.AddHeader("Postman-Token", "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx");
request.AddHeader("cache-control", "no-cache");
IRestResponse response = client.Execute(request);

Любые идеи о том, что я делаю неправильно. Я пытался просмотреть необработанные данные, попадающие с Fiddler, но когда я это сделал, Почтальон указывает на сбой. Какой код мне нужно использовать, чтобы дублировать то, что делает Почтальон?

Как реализовать URL обратного вызова, если это также требуется?

1 Ответ

0 голосов
/ 12 июля 2019

Я быстро проверил документы ZoHo REST API, и кажется, что вы должны использовать ограниченное устройство ввода поток аутентификации .

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

https://accounts.zoho.com/oauth/v3/device/code?
client_id=1000.GMB0YULZHJK411248S8I5GZ4CHUEX0&
scope=AaaServer.profile.READ&
grant_type=device_request

Вам также будет лучше с JSON, установленным по умолчанию для сериализации и типа контента, просто используя client.UseJson().

...