我正在用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
擅自
我究竟做错了什么?
我相信你使用错误的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);