2016-07-21 9 views
4

У меня естьКак получить маркер аутентификации OAuth 2.0 в C#

Я тогда нужно сделать ПОЛУЧИТЬ вызов с помощью маркеров носителя в заголовке.

Я могу заставить это работать в Postman, но ударил стену, пытаясь понять, как реализовать ее на C#. Я использовал RestSharp (но открыт для других). Все это кажется таким непрозрачным, когда я думал, что это будет довольно просто:/Это консольное приложение, поэтому мне не нужны колокола и свистки.

В конечном счете, я хочу, чтобы мое приложение (программно) получило токен, а затем используйте его для моих последующих вызовов. Я был бы признателен, если бы кто-нибудь указывал мне на документацию или примеры, что объясняет, что я после ясно. Все, с чем я столкнулся, является частичным или для служб, работающих с другим потоком.

Спасибо.

ответ

10

В Почтальон, нажмите Создать код, а затем в Генерирование фрагментов кода диалога вы можете выбрать другой язык кодирования, включая C# (RestSharp).

Кроме того, вам нужен только URL-адрес доступа к токенам. Параметры формы затем:

grant_type=client_credentials 
client_id=abc  
client_secret=123 

Код сниппета:

var client = new RestClient("https://service.endpoint.com/api/oauth2/token"); 
var request = new RestRequest(Method.POST); 
request.AddHeader("cache-control", "no-cache"); 
request.AddHeader("content-type", "application/x-www-form-urlencoded"); 
request.AddParameter("application/x-www-form-urlencoded", "grant_type=client_credentials&client_id=abc&client_secret=123", ParameterType.RequestBody); 
IRestResponse response = client.Execute(request); 

Из тела ответа, то вы можете получить свой маркер доступа. Например для Bearer типа маркера, то вы можете добавить следующий заголовок для последующих запросов, прошедших проверку подлинности:

request.AddHeader("authorization", "Bearer <access_token>"); 
+0

Brilliant, работал отлично - я виноват noobness не заметить, что я мог бы изменить Генерировать код языка. Я также обнаружил (после публикации), что мне необходимо изменить протокол безопасности «ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;» тоже требуется (по крайней мере, в моем случае), встречаются другие коды состояния «0». – DougF