簡體   English   中英

如何使用 C# 獲取身份驗證令牌以獲取 VSO 工作項

[英]How to get Authentication Token to get VSO Workitems using C#

我需要使用C# Rest API調用來獲取 VSO工作項 我無法弄清楚如何為我的 http 請求獲取令牌。 下面是我所擁有的。 有人可以給我代碼以獲取令牌以向 VSO 進行身份驗證

https://docs.microsoft.com/en-us/rest/api/azure/devops/wit/work%20items/get%20work%20item?view=azure-devops-rest-6.0

using System;
using System.Net.Http;
using System.Threading.Tasks;

namespace GetVSOTask
{
    class Program
    {
        static async Task Main(string[] args)
        {
            string token = "?????";           
            var httpClient = new HttpClient
            {
                BaseAddress = new Uri("https://dev.azure.com/")
            };
            string URI = $"Microsoft/OSGS/_apis/wit/workitems/31054512?&api-version=6.0";

            httpClient.DefaultRequestHeaders.Remove("Authorization");
            httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
            HttpResponseMessage response = await httpClient.GetAsync(URI).ConfigureAwait(false);
            var HttpsResponse = await response.Content.ReadAsStringAsync();

            Console.WriteLine(HttpsResponse);

            Console.ReadLine();
        }
    }
}

您需要在 Azure DevOps 門戶中生成令牌:

  1. 在 Azure DevOps 中登錄您的組織( https://dev.azure.com/{yourorganization}

  2. 在您的主頁上,打開您的用戶設置,然后打開 select 個人訪問令牌。

  3. 然后是 select + 新令牌。

  4. 將您的令牌命名為 select 您要在其中使用令牌的組織,然后為您的令牌選擇一個生命周期。

  5. Select 此令牌的范圍以授權您的特定任務。

例如,要創建令牌以使構建和發布代理能夠向 Azure DevOps 服務進行身份驗證,請將令牌的 scope 限制為代理池(讀取和管理)。 要讀取審計日志事件,管理和刪除流,select 讀取審計日志,然后 select 創建。

  1. 完成后,請確保復制令牌。 為了您的安全,它不會再次顯示。 使用此令牌作為您的密碼。

創建 PAT 后,您可以在 Azure DevOps 中需要用戶憑據進行身份驗證的任何地方使用它。

在這里查看更多信息。

要將 PAT 令牌傳遞給 C# HTTP header,您需要將其轉換為 Z1EB445FA6BD078346BF6FA。

string credentials = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", "PAT")));

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials);

這是一個例子:

       ...

        {
            string credentials = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", "PAT")));
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri($"https://dev.azure.com/{OrganizationName}");  //url of your organization
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials);

                //connect to the REST endpoint            
                HttpResponseMessage response = client.GetAsync("/ProjectName/_apis/wit/workitems/467?api-version=6.0").Result;

                //check to see if we have a successful response
                if (response.IsSuccessStatusCode)
                {
                    var value = response.Content.ReadAsStringAsync().Result;
                    Console.WriteLine(value);
                    Console.ReadLine();
                }


            }
        }

有關更多詳細信息,您可以參考此文檔開始使用 REST API

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM