我有一个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/

10-11 14:09