我有一个AngularJS应用程序,该应用程序在用户填写表单后利用DocuSign嵌入式签名REST API打开带有DocuSign嵌入式文档的选项卡。
我在StackOverflow的一些主题上有所帮助,但是找不到像我的实现这样的东西。
我仍然在登录时收到401错误,我可以肯定这是因为CORS被阻止。
任何帮助表示赞赏!
这是我的DocuSign工厂:
app.factory('dsFactory', function($http) {
return {
login: function(templateId) {
return $http({
url: 'https://demo.docusign.net/restapi/v2/login_information',
method: 'GET',
params: {
'X-DocuSign-Authentication': {
'DocuSignCredentials': {
'UserName': 'xxx',
'Password': 'xxx',
'IntegratorKey': 'xxx'
}
}
}
});
},
envelope: function(baseUrl, templateId, recipientName, templateRoleName) {
var url = baseUrl + "/envelopes";
return $http({
url: url,
method: 'POST',
params: {
"emailSubject": "DocuSign API call - Embedded Sending Test",
"templateId": templateId,
"templateRoles": [{
"email": "xxx",
"name": recipientName,
"roleName": templateRoleName
}],
"status": "sent"
}
});
},
getUrl: function(baseUrl, envelopeId, recipientName) {
var url = baseUrl + "/envelopes/" + envelopeId + "/views/recipient";
return $http({
url: url,
method: 'POST',
params: {
"returnUrl": "http://www.docusign.com/devcenter",
"authenticationMethod": "email",
"email": "xxx",
"userName": recipientName
}
});
}
};
});
这是用嵌入式文档视图打开新选项卡的承诺链:
// Elaborate promise chain for DocuSign login and document url retrieval
loginPromise = dsFactory.login($scope.templateId);
loginPromise.then(
function(payload) {
$scope.dsBaseUrl = payload.data.loginAccounts[0].baseUrl;
envelopePromise = dsFactory.envelope($scope.dsBaseUrl, $scope.templateId, $scope.businessName, 'Signer');
envelopePromise.then(
function(payload) {
$scope.dsEnvelopeId = payload.data.envelopeId;
urlPromise = dsFactory.getUrl($scope.dsBaseUrl, $scope.dsEnvelopeId, $scope.businessName);
urlPromise.then(
function(payload) {
$scope.dsCompleteUrl = payload.data.returnUrl;
window.open($scope.dsCompleteUrl);
},
function(errorPayload) {
console.log('retrieve DS url failed' + '\n');
console.log('Status: ' + errorPayload.status);
}
);
},
function(errorPayload) {
console.log('retrieve DS envelopeId failed' + '\n');
console.log('Status: ' + errorPayload.status);
}
);
},
function(errorPayload) {
console.log('DS login failed' + '\n');
console.log('Status: ' + errorPayload.status);
}
);
关于如何使此集成正常工作的任何想法或帮助?
也许与标题有关?
最佳答案
此问题并非特定于Angular。
如果您可以使用回调或要求目标域在“ Access-Control-Allow-Origin”标题中添加您的域。对于您的特定问题,我认为您不能要求DocuSign这样做。它让您拥有#2。
您可以从服务器端调用API。
Angularjs https(浏览器)->您的服务器-> DocuSign API>您的服务器->浏览器
关于javascript - 带有AngularJS的XSRF:DocuSign API嵌入式View客户端实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27643399/