TObase64String未对我的访问令牌进行编码,导致未经授权的401

时间:2019-06-19 18:35:29

标签: c# access-token encode unauthorized tobase64string

问题是ToBase64string中的字符串“ resulted”正在调试时进行转换,但是随后在对它进行编码后使用result时,似乎在“ var response =”中我想使用“ resulted”编码后,它不会基于调试模式进行编码。为什么?我错过了什么

   [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 个答案:

答案 0 :(得分:0)

您需要在请求中添加授权标头。您需要将 Authorization 标头设置为 Bearer [acces_token]

httpClient.DefaultRequestHeaders.Authorization =
       new AuthenticationHeaderValue("Bearer "+ access_token);

请注意, Bearer 字词后面有一个空格。

此值 new AuthenticationHeaderValue(“ Bearer” + access_token)应该类似于 new AuthenticationHeaderValue(“ Bearer asadasda23qdaddfs45345”),其中 asadasda23qdaddfs45345 是您收到的访问令牌。

答案 1 :(得分:0)

当您的Acesstoken带有额外数据时,例如:“ {\” access_token \“:\” uKW7HeksFXz5QE1sF6Kjmfda5Fxi \“,\” token_type \“:\” Bearer \“} \ r \ n” 然后使用“子字符串”将其仅插入到访问令牌代码中,例如应如下所示->' 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;
                    }