不敢相信我遇到了登录:(当发生这种情况时很讨厌。
有人可以通过使用PAT密码或在最好的情况下使用OAuth令牌来了解如何连接TF.EXE吗?
我可能会补充一点,我已经有了一个Pat令牌和一个OAuth令牌,在尝试获取这些令牌时没有问题,但每次尝试这个例子时都会这样:
TF.exe workspaces /collection:xxxx.visualstudio.com/xxxx /loginType:OAuth /login:.,MyPatTokenOrMyOauthToken /noprompt
我收到以下回复:
TF30063:您无权访问xxxx.visualstudio.com \ xxxx。
所以,我知道命令它没关系,因为如果我没有指定登录,模态窗口会提示输入凭据,我已经使用该方法进行了测试并且工作正常。
最后,我可能会更改所有内容以更改TFS api的tf.exe,但我无法在api中找到相同的方法(参见参考:https://docs.microsoft.com/es-es/rest/api/vsts/?view=vsts)
如果API具有与TF.exe相同的方法,那将是有用的,但到目前为止,我在API中看不到相同的方法。
希望有人能解决我的问题。
提前致谢。
答案 0 :(得分:0)
从我的测试中,PAT令牌不能在以下命令中工作,您必须获得OAuth令牌:
tf workspaces /collection:https://xxxx.visualstudio.com /loginType:OAuth /login:.,[OAuth token]
对于使用Visual Studio Team Services(VSTS)进行身份验证的api,您可以参考this link中的示例:
以下是获取帐户项目列表的示例:
REST API
using System.Net.Http;
using System.Net.Http.Headers;
...
//encode your personal access token
string credentials = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", personalAccessToken)));
ListofProjectsResponse.Projects viewModel = null;
//use the httpclient
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("https://{accountname}.visualstudio.com"); //url of our account
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("_apis/projects?stateFilter=All&api-version=1.0").Result;
//check to see if we have a succesfull respond
if (response.IsSuccessStatusCode)
{
//set the viewmodel from the content in the response
viewModel = response.Content.ReadAsAsync<ListofProjectsResponse.Projects>().Result;
//var value = response.Content.ReadAsStringAsync().Result;
}
}
.Net客户端库
using Microsoft.TeamFoundation.Core.WebApi;
using Microsoft.VisualStudio.Services.Common;
...
//create uri and VssBasicCredential variables
Uri uri = new Uri(url);
VssBasicCredential credentials = new VssBasicCredential("", personalAccessToken);
using (ProjectHttpClient projectHttpClient = new ProjectHttpClient(uri, credentials))
{
IEnumerable<TeamProjectReference> projects = projectHttpClient.GetProjects().Result;
}
添加屏幕截图:
<强>更新强>
我已使用新帐户进行测试,结果如下。如果我删除了/loginType
和/login
参数,系统会弹出一个窗口让我登录。
没有/loginType
和/login
参数的屏幕截图:
包含/loginType
和/login
参数的屏幕截图: