如何使用访问令牌获得访问 REST API 的授权
How to use access tokens to get authorization to access REST APIs
我有一个用于 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;
}
其中 returns 访问令牌。
然后,我使用 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;
}
returns 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
您必须检查 rest-api 的文档以了解 api 需要什么授权方法。也许是 username/password 之类的东西。
https://用户名:token@your-api.com
将令牌添加到获取机场的请求中,方式与验证令牌时相同。
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");
}
我有一个用于 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;
}
其中 returns 访问令牌。
然后,我使用 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;
}
returns 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
您必须检查 rest-api 的文档以了解 api 需要什么授权方法。也许是 username/password 之类的东西。
https://用户名:token@your-api.com
将令牌添加到获取机场的请求中,方式与验证令牌时相同。
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");
}