zoukankan      html  css  js  c++  java
  • WebAPI学习笔记(11)使用Bearer 认证调用API

    调用:

    Task<string> task = MethodHelper.GetBearerAccessToken();
    string bearerAccessToken = task.Result;
    string content = @"{...}";
    HttpContent httpContent = new StringContent(content, Encoding.UTF8, "application/json");
    using (HttpClient httpClient = new HttpClient())
    {
      AuthenticationHeaderValue authentication = new AuthenticationHeaderValue("bearer", bearerAccessToken);
      httpClient.DefaultRequestHeaders.Authorization = authentication;
      httpClient.DefaultRequestHeaders.Add("user-key", "...");
    
      //发送
      var response = httpClient.PostAsync(config.BaseAddress, httpContent).Result;
      if (response.IsSuccessStatusCode)
      {
        //Successfully
      }
      else
      {
        //Failed
      }
    }

    生成Bearer Token方法:

    public static async Task<string> GetBearerAccessToken()
    {
      string clientId = ConfigurationManager.AppSettings["...ClientId"].ToString();
      string clientSecret = ConfigurationManager.AppSettings["...BearerClientSecret"].ToString();
      string instance = ConfigurationManager.AppSettings["...BearerInstance"].ToString();
      string tenantId = ConfigurationManager.AppSettings["...BearerTenantId"].ToString();
      string resourceId = ConfigurationManager.AppSettings["...BearerResourceId"].ToString();
      string authority = string.Format(CultureInfo.InvariantCulture, instance, tenantId);
    
      IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId)
                                                    .WithClientSecret(clientSecret)
                                                    .WithAuthority(new Uri(authority))
                                                    .Build();
    
      string[] resourceIds = new string[] { resourceId };
    
      AuthenticationResult result = null;
      try
      {
        result = await app.AcquireTokenForClient(resourceIds).ExecuteAsync().ConfigureAwait(false);
        return result.AccessToken;
      }
      catch (Exception ex)
      {
        throw;
      }
    }
  • 相关阅读:
    cubic-bezier贝塞尔曲线css3动画工具
    css媒体查询
    this call和apply
    容易混淆的url src href
    你不知道的css中的expression
    不同浏览器对document.documentElement和document.body的scrollheight ,scrollTop,clientHeight以及判断滚动条是否滚动到页面最底部 【转载】
    jquery动画遮罩
    手机页面中的meta标签
    Knowledge Point 20180305 机器数转换与进制转换
    Knowledge Point 20180305 数据在计算机中的表示
  • 原文地址:https://www.cnblogs.com/61007257Steven/p/12991189.html
Copyright © 2011-2022 走看看