TObase64String не кодирует мой токен доступа, в результате чего 401 не авторизован
Проблема в том, что строка 'result' в ToBase64string конвертируется так, как она выглядит во время отладки, но затем, когда я использую result после кодирования, это выглядит как в 'var response =', где я хочу использовать 'result' после кодирования, он не кодирует в режиме отладки. Почему? Я что-то пропустил
[HttpGet, Route("values/get")]
public async Task<string> Get(string resulted)
{
//resulted.Remove(0, 17);
string res = "";
using (var client = new HttpClient())
{
// HTTP POST
client.BaseAddress = new Uri("https://api.elliemae.com/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(resulted)));
var response = client.GetAsync("/encompass/v1/loans/{ea7c29a6-ee08-4816-99d2-fbcc7d15731d}?Authorization=Bearer "+resulted+"&Content-Type=application/json").Result;
using (HttpContent content = response.Content)
{
// ... Read the string.
Task<string> result = content.ReadAsStringAsync();
res = result.Result;
}
}
return res;
}
2 ответа
Когда ваш Acesstoken возвращается с дополнительными данными, например: " {\" access_token \ ": \" uKW7HeksFXz5QE1sF6Kjmfda5Fxi \ ", \" token_type \ ": \" Bearer \ "} \ r \ n", затем используйте "substring", чтобы просто бросить например, код доступа должен выглядеть так -> ' uKW7HeksFXz5QE1sF6Kjmfda5Fxi '
как? Accesstoken.Substring(x, x); (x= некоторое число, которое вычитаете из строки)
затем поместите его в свой DefaultRequestHeaders
public async Task<string> Get(string Accesstoken)
{
string res = "";
using (var client = new HttpClient())
{
Accesstoken = Accesstoken.Substring(17, 28);
client.BaseAddress = new Uri("https://api.elliemae.com/");
//client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + Accesstoken);
var response = client.GetAsync("encompass/v1/loans/ea7c29a6-ee08-4816-99d2-fbcc7d15731d").Result;
using (HttpContent content = response.Content)
{
// ... Read the string.
Task<string> result = content.ReadAsStringAsync();
res = result.Result;
}
Вам необходимо добавить в запрос заголовок авторизации. Вам нужно установить заголовок авторизации на Bearer [acces_token]
httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer "+ access_token);
Обратите внимание, что после слова на предъявителя есть пробел.
Это значение new AuthenticationHeaderValue("Bearer "+ access_token) должно быть чем-то вроде нового AuthenticationHeaderValue("Bearer asadasda23qdaddfs45345"), где asadasda23qdaddfs45345 - ваш полученный токен доступа.