有没有办法使用 RestSharp 只获取访问令牌?

Is there a way to get only the access token using RestSharp?

我只想获取访问令牌并在新请求中传递它,但出现错误:IRestResponse does not contain a definition for "AccessToken'

var client = new RestClient("https://localhost:5001/");
client.Timeout = -1;
var ClientID = "client";
var ClientSecret = "secret";
var Scope = "Api1";
var request = new RestRequest("connect/token", Method.POST);
request.AddParameter("grant_type", "client_credentials");
request.AddParameter("client_id", ClientID);
request.AddParameter("client_secret", ClientSecret);
request.AddParameter("scope", Scope);
IRestResponse response = client.Execute(request);
if (!response.IsSuccessful)
    {
       Console.WriteLine("Authorization token request failed with the following error: @{Error}", response.Content);
       throw new Exception(response.Content);
                           
    }
    else
    {
                                               
    var token = response.AccessToken;

....

试试这个

   var result = JsonConvert.DeserializeObject<dynamic>(response.Content); 
   var token = result.access_token //the name of the access token in your response can be different, change it to whatever suits your needs

我没有使用过 RestSharp,但查看了反序列化响应内容所需的文档。

您可以使用 Execute() 版本执行此操作,其中 returns IRestResponse 包含所请求对象的 T 数据成员。

IRestResponse<TokenResponseClass> response = client.Execute<TokenResponseClass>(request);
if (!response.IsSuccessful)
{
   Console.WriteLine("Authorization token request failed with the following error: @{Error}", response.Content);
   throw new Exception(response.Content);
                       
}
else
{
                                           
var token = response.Data.AccessToken;