2016-08-22 2 views
2

Я пытаюсь получить все существующие определения опираться на 2015 Update 3 сервера TFS с использованием REST API из Microsofts VSTS SDK в приборной панели виджетов:Как получить определения сборки из TFS с использованием REST API в виджетах VSTS?

VSS.init({       
    explicitNotifyLoaded: true, 
    usePlatformStyles: true 
}); 

VSS.require("TFS/Dashboards/WidgetHelpers", "TFS/Build/RestClient", "VSS/Authentication/Services"], 
    function (WidgetHelpers, TFS_Build_Api) { 
    VSS.register("BuildStatusMonitor.Configuration", function() { 

     return { 
      load: function (widgetSettings, widgetConfigurationContext) { 
       var buildClient = TFS_Build_Api.getClient(); 
       buildClient.getDefinitions().then(function(definition) { 
        // 
       }, function(reason) { 
        // 401 
       }); 
      }, 
     } 
    }); 
    VSS.notifyLoadSucceeded(); 
}); 

К сожалению, я всегда получаю

TFS.WebApi.Exception: TF400813: Ресурс недоступен для анонимного доступа. Требуется аутентификация клиента.

Что я делаю неправильно?

Когда я посылаю запрос получить на консоли chromes разработчика, я получаю правильный ответ: =/

$ .get ("HTTP: // *****: 8080/TFS/TestReporting /DashboardWidgets/_apis/build/definitions?api-version=2.2").success(function(res) {console.log (разреш)})

+2

ли вы указать область в выдвижении манифеста: https://www.visualstudio.com/en-us/docs/integrate/extensions/develop/add-dashboard-widget#step- 2-доступ-VSTS-ресурсы? –

+0

ОК, это неловко. Спасибо, Эдди, я действительно забыл объявить область vso.build. Вы возлагали мои надежды! Хотя, к сожалению, добавление области не решает проблему. Я переустановил расширение, но проблема остается. – simarust

+2

Нашел мою ошибку. Просто не разрешено запрашивать ** все ** определения сборки. Вызов buildClient.getDefinitions ("projectName") работает отлично. И все же большое спасибо вашей помощи, особенно Эдди за то, что он напомнил мне о настройке области ...;) – simarust

ответ

0

Это может быть то, что вам нужно включить дополнительные учетные данные. Смотрите эту ссылку: https://binary-stuff.com/post/how-to-enable-alternate-credentials-in-visual-studio-online-vso

А также эта связь может быть весьма полезным для установления подлинности в правильном порядке: https://www.visualstudio.com/en-us/docs/integrate/get-started/auth/overview

+0

Спасибо за вашу помощь, но я пытаюсь заставить расширение работать на собственном сервере TFS, а не на VS онлайн. На VS онлайн проблема также возникает, поэтому я думаю, что это мое расширение, которое вызывает проблему. Мой токен доступа установлен на «все области». знак равно – simarust

1

Согласно информации об ошибке, вам может понадобиться для проверки подлинности в API TFS REST.

VSTS и TFS имеют разные методы аутентификации, оба могут быть достигнуты с помощью PowerShell.

Для авторизации с TFS в сценарии, вы можете передать имя пользователя и пароль (замаскирован в качестве секретного переменной) с помощью PowerShell в PSCredential объекта и использовать -Credential переключатель при вызове метод REST. Пример из ниже:

$securePassword = $Password | ConvertTo-SecureString -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($User, $securePassword)  
$releaseresponse = Invoke-RestMethod -Method Get -Credential $credential -ContentType application/json -Uri $Uri 
Смежные вопросы