我想使用 C# 代码使用 REST API 在 BitBucket 中创建存储库。 [我正在使用免费的bibucket账户]
https://api.bitbucket.org/2.0/repositories/{workspace}/{repo_slug}
--url 'https://api.bitbucket.org/2.0/repositories/{workspace}/{repo_slug}' \
--header 'Authorization: Bearer <access_token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
这对我不起作用。 我提供了应用程序令牌来创建存储库。
或者有什么方法可以创建存储库并使用基本身份验证将数据推送到存储库中? (用户名和密码)。
代码:-
private string CreateNewBitbucketRepo(string ownername, string password, string repositoryname)
{
try
{
// Construct the URL for Bitbucket API to create a new repository
var apiUrl = $"https://api.bitbucket.org/2.0/repositories/{ownername}/{repositoryname}";
// Create a JSON payload to specify the repository details
var payload = new
{
name = repositoryname,
is_private = false
};
var jsonPayload = JsonConvert.SerializeObject(payload);
using (var client = new HttpClient())
{
//client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes($"{ownername}:{password}")));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", password);
var content = new StringContent(jsonPayload, Encoding.UTF8, "application/json");
var response = client.PostAsync(apiUrl, content).Result;
if (response.IsSuccessStatusCode)
{
return string.Empty;
}
else
{
return $"\nE: For some reason, the repository {repositoryname} can't be created on Bitbucket. {response.ReasonPhrase}";
}
}
}
catch (Exception e)
{
return $"\nSomething went wrong. The repository {repositoryname} can't be created on Bitbucket. {e.Message}";
}
}
我在密码中提供了正确的用户名和应用程序令牌。
我还尝试使用用户名和密码(基本身份验证)——但没有成功。
我找到了这个问题的答案。
首先创建应用程序令牌 - 授予必要的权限。--> 如何在 bitbucket 中创建应用程序令牌?
照常在用户名中传递用户名。 在密码中传递应用程序令牌 不要向您传递 bitbucket 帐户密码。
private string CreateNewBitbucketRepo(字符串所有者名称,字符串密码,字符串存储库名称,字符串用户名)
{ try {
// Construct the URL for Bitbucket API to create a new repository
var apiUrl = $"https://api.bitbucket.org/2.0/repositories/{ownername}/{repositoryname}";
// Create a JSON payload to specify the repository details
var payload = new
{
name = repositoryname,
is_private = false,
};
var jsonPayload = JsonConvert.SerializeObject(payload);
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes($"{username}:{password}")));
//client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", password);
var content = new StringContent(jsonPayload, Encoding.UTF8, "application/json");
var response = client.PostAsync(apiUrl, content).Result;
if (response.IsSuccessStatusCode)
{
return string.Empty;
}
else
{
return $"\nE: For some reason, the repository {repositoryname} can't be created on Bitbucket. {response.ReasonPhrase}";
}
}
}
catch (Exception e)
{
return $"\nSomething went wrong. The repository {repositoryname} can't be created on Bitbucket. {e.Message}";
}
}