如何使用访问令牌获得访问 REST API 的授权

穆斯塔法

我有一个用于 REST API 的 HttpClient。我从服务器获取访问令牌,但我无权使用 REST API。回应是Error: Unauthorized

首先,使用getAccessToken()方法,我得到访问令牌。

   public static async Task<string> getAccessToken()
    {
            var client = new HttpClient();

            client.DefaultRequestHeaders.Add("Referer", "http://admin.altrabo.com/");

            var tokenClient = new TokenClient()
            {
              client_Id= -1,
              username= "admin",
              password= "Main@dm!n",
              grant_Type= "Main@dm!n",
              externalProvider= 1,
 
            };

            HttpResponseMessage response = await client.PostAsJsonAsync<TokenClient>("https://api.altrabo.com/api/v1/token", tokenClient);
            var json = JsonSerializer.Deserialize<AccessToken>(response.Content.ReadAsStringAsync().Result);
            return json.access_token;
   }

它返回访问令牌。

然后,使用该verifyToken()方法验证访问令牌。

public static async Task<string> verifyToken(string access_token)
{
  var client = new HttpClient();
  client.DefaultRequestHeaders.Add("Authorization", "Bearer " + access_token);
  HttpResponseMessage response = await client.GetAsync("https://api.altrabo.com/api/v1/verifyToken");
  return response.ReasonPhrase;          
}

返回 OK

但是当我想访问 API 时,我遇到了Error: Unauthorized.

例如,当我想获取机场列表时:

public static async Task<string> ListAirports()
{
    var client = new HttpClient();
    return await client.GetStringAsync("https://api.altrabo.com/api/v1/BaseData/GetAirports?pageSize=1000&pageNumber=1");
}

API 文档位于https://www.getpostman.com/collections/51cd9e7f5f6ebafa8c48

拉斯·克里斯滕森

以与验证令牌时相同的方式将令牌添加到获取机场的请求中。

public static async Task<string> ListAirports(string access_token)
{
    var client = new HttpClient();
    client.DefaultRequestHeaders.Add("Authorization", "Bearer " + access_token);
    return await client.GetStringAsync("https://api.altrabo.com/api/v1/BaseData/GetAirports?pageSize=1000&pageNumber=1");
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章