OAuth 2.0未获得授权

问题描述 投票:1回答:1

我正在用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);

当我运行代码时,我不断获得StatusCode

擅自

我究竟做错了什么?

c# oauth-2.0 console-application
1个回答
1
投票

我相信你使用错误的grant_type作为刷新令牌,here is the relevant specification,所以如果你的参数有效,下面的代码应该可以工作。

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);
© www.soinside.com 2019 - 2024. All rights reserved.