通过打字稿httpClient.post获取Docusign访问代码

时间:2020-10-06 18:39:23

标签: typescript ionic-framework post httpclient docusignapi

在通过docusign api获取访问令牌时,我需要一些帮助。下面是我在xcode中看到的错误代码。通过邮递员进行测试会返回访问码,但我无法通过该应用程序(在本地设备或浏览器上运行)正常工作。在浏览器中运行会给我一个CORS错误,但这是可以预期的。为什么我无法弄清楚iPhone上的错误。

我正在使用离子打字稿。我看到的大多数示例都使用带有大量代码的express,但我不明白如何将其集成到ionic项目中。如果除了一些小的修补程序之外,还有很多其他事情要做,我愿意雇用一个人来使它运行。

谢谢

//docusign access token using authorization code
             const post_data = {
              'code': this.dsAuthCode,
              'grant_type': "authorization_code"
            }
    
            // Http Options
             const httpOptions = {
                headers: new HttpHeaders({
                  'Authorization': "Basic " + b64ds
                })
              }
    
          this.httpClient.post('https://account-d.docusign.com/oauth/token', post_data, httpOptions)
          .subscribe((data:any) => {
              this.dsAccessToken = data.access_token
              console.log('Access Token ', data.access_token)
              //this.docsignUserURI(data.access_token)
          }, error => {
              console.log('access token error', JSON.stringify(error));
          });


access token error {"headers":{"normalizedNames":{},"lazyUpdate":null,"headers":{}},"status":0,"statusText":"Unknown Error","url":"https://account-d.docusign.com/oauth/token","ok":false,"name":"HttpErrorResponse","message":"Http failure response for https://account-d.docusign.com/oauth/token: 0 Unknown Error","error":{"isTrusted":true}}

1 个答案:

答案 0 :(得分:0)

这是我现在的工作方式。我从网络docusign弹出窗口获取访问代码,然后使用“ request-promise”将其传递到Firebase Cloud Functions可调用的https请求中。

.ts page:

async docsignAccessToken(){
   //this.dsAuthCode is a two sided [(ngModel)} on the html page
   // the docusign authorize code is pasted before running this functions
      console.log('starting access token, authcode = ', this.dsAuthCode)

      var fbdsAuth = firebase.functions().httpsCallable('dsAuth');
      fbdsAuth({dsAuthCode: this.dsAuthCode, b64ds: b64ds}).then(function(result) {
    // Read result of the Cloud Function.
    this.dsAccessToken = JSON.parse(result.data).access_token
    //this.docsignUserURI(data.access_token)
    // ...
      }).catch(function(error) {
        // Getting the Error details.
        var code = error.code;
        var message = error.message;
        var details = error.details;
        console.log(error)
        // ...
    });  

  }



firebase cloud functions:

    export const dsAuth = functions.https.onCall((data, context) => {
    
    
          var request = require('request-promise');;
          var options = {
            'method': 'POST',
            'url': 'https://account-d.docusign.com/oauth/token',
            'headers': {
              'Authorization': 'Basic ' + data.b64ds,
              'Content-Type': 'application/x-www-form-urlencoded'
            },
            form: {
              'code': data.dsAuthCode,
              'grant_type': 'authorization_code'
            }
          };
          return request(options, function (error, response) {
            if (error) throw new Error(error);
            console.log(response.body);
          });
    
        });