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;
      }
    }
  • 相关阅读:
    ASP.net实现WEB站点的后台定时任务[转]
    個人所得稅計算
    當VS2005 遇上 LINQ[转]
    NBearV3中文教程总目录
    C#开源框架
    excel 不能使用对象链接和嵌入的错误
    PetShop 学习
    ADHelper类与扩展应用
    (javascript,treeview)treeview通过checkbox来进行全选单选
    (javascript)动态添加的控件如何设置其属性
  • 原文地址:https://www.cnblogs.com/61007257Steven/p/12991189.html
Copyright © 2011-2022 走看看