2017-06-30 4 views
0

OAuth2WebServiceにVS-Team-Servicesを接続する必要があります。
公式ウェブサイトにsample solutionが見つかりましたが、私たちのウェブサービスコードで使用するように変更することはできません。
アクセストークンを要求するときは、アクセス許可Accept or Denyを要求しているためです。
許可ページなしでトークンへのアクセスを自動的に許可する必要があります。Asp.Net Webフォームを介して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テンプレートです。 VSTS OAuthに簡単にアクセスできますかAsp.Net Webformテンプレート?

答えて

0

権限許可ページなしでは実行できず、ユーザーは手動で承認または拒否する必要があります。ただし、アクセストークンまたはリフレッシュトークン(有効期限が1年間)が有効な場合は、再度認証する必要はありません。

VSTS OAuthテンプレートを使用したAsp.Net Webformsはありませんが、ワークフローはさまざまな種類のWebアプリケーションと同じです。

+0

** VSTS OAuthテンプレートを使用したAsp.Net Webformがあります** - 既にサンプルがありますか?もしそうなら、正しい方向を指してください。 –

+0

間違いの申し訳ありませんが、私はないことを意味.... –

関連する問題