在通过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}}
答案 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);
});
});