2017-07-07 4 views
0

Ich versuche, auf die Service-Endpunkt-Setup in meinem Erweiterungscode zuzugreifen.Zugriff auf VSTS-Service-Endpunkte von JavaScript aus

Die Erweiterung ist wie folgt:

{ 
    "manifestVersion": 1, 
    "id": "vsts-extensions-myExtensions", 
    "version": "0.5.1", 
    "name": "xxx Projects Time Entry", 
    "description": "Record time spent in xxx Projects", 
    "publisher": "xxx", 
    "targets": [ 
    { 
     "id": "Microsoft.VisualStudio.Services" 
    } 
    ], 
    "icons": { 
    "default": "img/logo.png" 
    }, 
    "contributions": 
    [ 
    { 
     "id": "xxTimeEntry", 
     "type": "ms.vss-dashboards-web.widget", 
... 
    }, 

    { 
     "id": "service-endpoint", 
     "description": "Service Endpoint type for xx connections", 
     "type": "ms.vss-endpoint.service-endpoint-type", 
     "targets": [ "ms.vss-endpoint.endpoint-types" ], 
     "properties": { 
     "name": "xxxyyy", 
     "displayName": "xx server connection", 
     "url": { 
      "displayName": "Server Url", 
      "helpText": "Url for the xxx server to connect to." 
     }, 
     "dataSources": [ 
      { 
      "name": "xxx Projects", 
      "endpointUrl": "{{endpoint.url}}api/timesheetwidgetprojects", 
      "resultSelector": "jsonpath:$[*].nm" 
      } 
     ], 
     "authenticationSchemes": [ 
      { 
      "type": "ms.vss-endpoint.endpoint-auth-scheme-basic", 
      "inputDescriptors": [ 
       { 
       "id": "username", 
       "name": "Username", 
       "description": "Username", 
       "inputMode": "textbox", 
       "validation": { 
        "isRequired": false, 
        "dataType": "string" 
       } 
       }, 
       { 
       "id": "password", 
       "name": "Password", 
       "description": "Password", 
       "inputMode": "passwordbox", 
       "isConfidential": true, 
       "validation": { 
        "isRequired": false, 
        "dataType": "string" 
       } 
       } 
      ] 
      } 
     ] 
     } 
    } 
    ], 
... 

Der Code, um den Service-Endpunkt zuzugreifen, ist so etwas wie:

VSS.require(["VSS/Service", "VSS/WebApi/RestClient"], 
    function (VSS_Service, RestClient) { 
     var webContext = VSS.getWebContext(); 
     var client = VSS_Service.getCollectionClient(DistributedTask.TaskAgentRestClient); 
     client.getServiceEndpoints(webContext.project.id).then(
      function (endpoints) { 
       alert('endpoints') 
      } 
     ); 
    } 
); 

jedoch bin ich nicht eine Aufgabe verwenden und nur meinen Endpunkt in der Haupt habe vss-Erweiterung.json.

Irgendwelche Ideen?

Dank Martin

+0

Welche Fehler sehen Sie? –

Antwort

1

Basierend auf den supported scopes, gibt es nicht den Raum für Service-Endpunkt, so dass Sie es nicht tun.

Ich reiche hier eine Benutzerstimme ein: VSTS extension service endpoint scope, können Sie abstimmen und folgen.

Die Problemumgehung besteht darin, dass Sie REST API mithilfe von JS-Code mit Personal Access Token in Ihrer Erweiterung aufrufen können.

Einfache Code REST API aufrufen:

$.ajax({ 
      url: 'https://fabrikam.visualstudio.com/defaultcollection/_apis/projects?api-version=1.0', 
      dataType: 'json', 
      headers: { 
       'Authorization': 'Basic ' + btoa("" + ":" + myPatToken) 
      } 
     }).done(function(results) { 
      console.log(results.value[0].id + " " + results.value[0].name); 
     }); 
Verwandte Themen