OAuth 2.0 не авторизуется - PullRequest
1 голос
/ 25 апреля 2019

Я пишу консольное приложение на C #, которое должно подключаться к веб-сайту, использующему OAuth 2.0.

Я использую следующий код:

var client = new RestClient(new Uri(BaseUri, "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.AddHeader("authorization", "Bearer " + user.RefreshToken);
request.AddParameter("application/x-www-form-urlencoded", "grant_type=client_credentials&client_id=" + MyClientIdentifier() + "&client_secret=" + MyClientSecret(), ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

Когда япри выполнении кода я продолжаю получать код состояния

Несанкционировано

Что я делаю не так?

1 Ответ

1 голос
/ 25 апреля 2019

Я полагаю, что вы используете неправильный grant_type для токена обновления, здесь приведена соответствующая спецификация , поэтому следующий код должен работать, если ваши параметры верны.

var client = new RestClient(new Uri(BaseUri, "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=refresh_token" +
        $"&refresh_token={user.RefreshToken}" +
        $"&client_id={MyClientIdentifier()}" + 
        $"&client_secret={MyClientSecret()}",
    ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
...