【发布时间】:2023-03-28 09:51:01
【问题描述】:
当我尝试调用这个 oauth-1.0 API 请求时,
const request = require('request');
const OAuth = require('oauth-1.0a');
const crypto = require('crypto');
function main(params) {
// Dependencies
// Initialize
const oauth = OAuth({
consumer: {
key: '****',
secret: '****'
},
signature_method: 'HMAC-SHA1',
hash_function(base_string, key) {
return crypto.createHmac('sha1', key).update(base_string).digest('base64');
}
});
// Note: The token is optional for some requests
const token = {
key: '****',
secret: '****'
};
const request_data = {
url: 'http://****/rest/V1/products/12345',
method: 'GET',
//data: { status: 'Hello Ladies + Gentlemen, a signed OAuth request!' }
};
return new Promise((resolve, reject) => {
request({
url: request_data.url,
method: request_data.method,
form: request_data.data,
headers: oauth.toHeader(oauth.authorize(request_data, token))
}, function (err, res, body) {
//console.log(res.body.name);
if (err){
reject({
statusCode: 500,
headers: { 'Content-Type': 'application/json' },
body: {'message': 'Error processing your request' },
});
} else {
resolve({
body: JSON.parse(body),
})
}
});
});
};
exports.main = main;
它返回
承诺{ }
未定义
但是,当我只使用 console.log(body) 时,它会给出正确的结果
........
..................
....
.....
.....
.....
【问题讨论】:
-
你必须等待
.then回调中的promise解决。 -
我遵循了 IBM Cloud Functions 天气模板的布局,它的布局与我的几乎完全相同(除了我的是 oauth 而天气不是)。我只是不确定为什么那个有效,但我的无效
标签: node.js promise return oauth-1.0a