Ich versuche, den letzten Aufruf in unten Code funktioniert, aber ein Problem mit $ scope.token Variable haben. Es wird an den Dienst mit nicht definiertem Wert übergeben. Ich habe versucht, eine Variable nach der anderen in die getAccessToken-Funktion zu übergeben, aber es funktioniert auch nicht. Interessanterweise werden die Variablen $ scope.client und $ scope.tenant ordnungsgemäß übergeben.
Ich fand eine Menge Ressourcen in Bezug auf .service oder .factory, was mich auch diesen Aufruf in einen anderen Controller trennen würde, aber das sind zu fortgeschrittene Themen für einen Anfänger.
Ich bin neu in der Programmierung überhaupt, also mache ich wahrscheinlich einen dummen Fehler.
var defaultListApp = angular.module('defaultListApp', ['build', 'build_editors']);
defaultListApp.controller('authorizationCtrl', ['$scope', '$location', 'Restangular', '$http', function($scope, $location, Restangular, $http){
Restangular.setBaseUrl('https://api.xxx.io/xxx/xxx/');
Restangular.one('projects/' + Build.currentProjectId + '/clients').getList().then(function(items){
$scope.items = Restangular.stripRestangular(items);
console.log("ITEMS: " + $scope.items);
},function(error){
//handle error
});
$scope.selectClient = function(client) {
$scope.client = client.id;
Restangular.setBaseUrl('https://api.xxx.io/xxx/xxx/');
Restangular.one('projects/' + Build.currentProjectId + '/clients/' + $scope.client + '/credentials').get().then(
function(response){
$scope.credentials = Restangular.stripRestangular(response);
$scope.clientId = $scope.credentials[0].clientId;
$scope.clientSecret = $scope.credentials[0].clientSecret;
$scope.getAccessToken($scope.client, $scope.clientSecret);
$scope.tenant = Build.currentProjectId;
$scope.getAppRepresentation($scope.client, $scope.tenant, $scope.token);
});
};
$scope.getAccessToken = function(oauthPayload){
$http({
method: 'POST',
url: 'https://api.xxx.io/xxx/oauth2/token',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
data: 'grant_type=client_credentials' +
'&scope=xxx.view xxx.manage' +
'&client_id=' + $scope.clientId +
'&client_secret=' + $scope.clientSecret
}).then(function(response) {
$scope.token = response.data.access_token;
$scope.getAppRepresentation($scope.client, $scope.tenant, $scope.token);
var path = "/calls.html";
window.location.href = path;
})
};
$scope.getAppRepresentation = function(getApp){
$http({
method: 'GET',
url: 'https://api.xxx.io/xxx/documents/' + $scope.tenant + '/' + $scope.client,
headers: {'Authorization': 'Bearer ' + $scope.token }
}).then(function(response) {
$scope.appData = response.data;
console.log($scope.appData);
})
}
Danke! Das hat mir sehr geholfen, ich war in der Lage, PoC zu präsentieren und arbeite jetzt hart daran, diesen Code (zumindest ein bisschen) professionell zu machen: spaltet verschiedene Funktionen auf, um Controller und Dateien zu trennen und fügt einige CSS in HTML ein :) – KamilaM