2017-06-30 47 views
0

我需要通过OAuth2连接WebService中的VS-Team-Services。
我在官方网站上发现了sample solution,但我无法修改它在我们的Web服务代码中使用它。
因为它在请求访问令牌时请求许可Accept or Deny
我需要它自动授予访问没有权限页的令牌。通过Asp.Net WebForms访问VS-Team Services OAuth

这是我以前的工作代码没有OAuth。我需要根据OAuth修改此代码。

private Dictionary<string, MyTfsTeamProjectCollectionHelper> GetTFSProjectCollections() 
{ 
    try 
    { 
     TFSConnectionProviderHelper connect = new TFSConnectionProviderHelper(); 
     ICredentials iCred = new NetworkCredential(strTFSUsername, strTFSPassword); 
     connect.GetCredentials(new Uri(ConfigurationManager.AppSettings["ServerURL"]), iCred); 
     TfsConfigurationServer configurationServer = TfsConfigurationServerFactory.GetConfigurationServer(new Uri(ServerURL), connect); 
     configurationServer.EnsureAuthenticated(); 

     ReadOnlyCollection<CatalogNode> collectionNodes = configurationServer.CatalogNode.QueryChildren(new[] { CatalogResourceTypes.ProjectCollection }, false, CatalogQueryOptions.None); 
     DictionaryTfsTeamProjectCollection = new Dictionary<string, MyTfsTeamProjectCollectionHelper>(); 
     foreach (CatalogNode tpcNode in collectionNodes) 
     { 
      MyTfsTeamProjectCollectionHelper myTfsTeamProjectCollection = new MyTfsTeamProjectCollectionHelper(); 

      Guid tpcId = new Guid(tpcNode.Resource.Properties["InstanceId"]); 
      TfsTeamProjectCollection tfsTeamProjectCollection = configurationServer.GetTeamProjectCollection(tpcId); 
      myTfsTeamProjectCollection.TfsTeamProjectCollection = tfsTeamProjectCollection; 

      DictionaryTfsTeamProjectCollection.Add(tfsTeamProjectCollection.Name.Replace(tfsTeamProjectCollection.ConfigurationServer.Name.ToString() + "/", "").ToLower(), myTfsTeamProjectCollection); 
     } 
     return DictionaryTfsTeamProjectCollection; 
    } 
    catch (Exception ex) 
    { 
     Logger.WriteToLog(Logger.LogType.Error, strFlow, strCaseno, strTFSID, strUser, ex.Message); 
     Logger.WriteToLog(Logger.LogType.Error, strFlow, strCaseno, strTFSID, strUser, " StackTrace: " + ex.StackTrace); 
     return null; 
    } 


} 
private Project GetTFSProject(string tfsProjectCollectionName, string StrTFSProject) 
{ 
    try 
    { 
     GetTFSProjectCollections(); 
     Project project = null; 
     if (DictionaryTfsTeamProjectCollection != null && DictionaryTfsTeamProjectCollection.Keys.Contains(tfsProjectCollectionName.ToLower())) 
     { 
      TfsTeamProjectCollection myTeamProjectCollection = DictionaryTfsTeamProjectCollection[tfsProjectCollectionName.ToLower()].TfsTeamProjectCollection; 
      WorkItemStore workItemStore = myTeamProjectCollection.GetService<WorkItemStore>(); 
      project = (from Project pr in workItemStore.Projects select pr).ToList().Where(i => i.Name.ToLower() == StrTFSProject.ToLower()).SingleOrDefault(); 
     } 
     else 
     { 
      Logger.WriteToLog(Logger.LogType.Error, strFlow, strCaseno, strTFSID, StrTFSProjectcollection, "ProjectCollectionName does not exist:" + tfsProjectCollectionName); 
     } 
     return project; 
    } 
    catch (Exception ex) 
    { 
     Logger.WriteToLog(Logger.LogType.Error, strFlow, strCaseno, strTFSID, strUser, ex.Message); 
     Logger.WriteToLog(Logger.LogType.Error, strFlow, strCaseno, strTFSID, strUser, " StackTrace: " + ex.StackTrace); 
     return null; 
    } 
} 

权限页面的屏幕截图:

enter image description here

我们是一个WebForms模板。是否可以通过简单的Asp.Net Webforms模板访问VSTS OAuth模板?

回答

0

如果没有权限授权页面,用户必须手动接受或拒绝它,否则无法进行此操作。但是,如果访问令牌或刷新令牌(1年到期)有效,则不需要再次授权。

不存在具有VSTS OAuth模板的Asp.Net Webforms,但是不管使用哪种类型的Web应用程序,工作流都是相同的。

+0

**有VSTS OAuth模板的Asp.Net Webforms ** - 是否有样本?如果是的话,请你指出正确的方向。 –

+0

对不起,我的意思是没有.... –