我可以使用一些 javascript 函数帮助。
下面的代码是使用 node.js 的 stripe 的示例,基本上是将代码发布回 stripe 以获取一些用户详细信息。
app.get('/oauth/callback', function(req, res) {
var code = req.query.code;
// Make /oauth/token endpoint POST request
request.post({
url: TOKEN_URI,
form: {
grant_type: 'authorization_code',
client_id: CLIENT_ID,
code: code,
client_secret: API_KEY
}
}
});
我需要设置一个类似的函数,但主要区别是我已经有了该代码并且希望将代码传递到该函数中。
目前我的函数如下所示:
var getAccountDetails = function(req, res) {
// Make /oauth/token endpoint POST request
request.post({
url: 'https://connect.stripe.com/oauth/token';,
form: {
grant_type: 'authorization_code',
client_id: 'ca_XXXXXXXXXXXXXXXXXXXXXXXXX',
code: code,
client_secret: API_KEY
}
}, function(err, r, body) {
});
};
我正在从另一个函数中调用 getAccountDetails(),但想传递给 getAccountDetails(code),但我仍然在 javascript 函数方面遇到了一些困难。
**************** 更新****************
在谷歌云功能控制台上,我不断收到超时消息。如果有人发现代码有任何明显错误,请告诉我。
function getAccountDetails(code)
{
console.log(code)
return function(req, res) {
// Make /oauth/token endpoint POST request
request.post({
url: 'https://connect.stripe.com/oauth/token',
form: {
grant_type: 'authorization_code',
client_id: 'xxxxxxxxx',
code: code,
client_secret: 'xxxxxxxxxxxx'
}
}, function(err, r, body) {
// var accessToken = JSON.parse(body).access_token;
console.log(body);
});
}
}
exports.authCode = functions.https.onRequest((req, res) => {
console.log(req)
var code = req.query.code;
console.log(code);
getAccountDetails(code)
});
谢谢。
最佳答案
对你的标题问题的简短回答是否定的。 JavaScript 对于函数定义中的参数数量是否与调用函数时传入的参数数量相匹配非常灵活。
处理不同数量的参数是这样处理的:
- 如果调用函数时使用的参数少于定义中的参数,则未包含的参数将在函数执行中
未定义
。 - 如果调用函数时使用的参数多于定义中的参数,多余的参数不会导致任何问题
事实上,在第二种情况下,您仍然可以使用 arguments
关键字访问传入的额外参数:
function example(p1, p2) {
console.log(arguments[2]);
}
example('one', 'two', 'three'); // logs: 'three'
<小时/>
但是,您正在使用的函数看起来可能是框架的一部分。如何使用它取决于什么框架以及它在该框架中的位置。
您可以修改函数定义:
var getAccountDetails = function(req, res, code) {
// ...
只要框架没有其他部分调用该函数,可能期望第三个参数中存在其他内容(例如,许多基于 Express 的应用程序可能期望第三个参数是回调函数,通常标记为 next
等),这就很好。
作为最好的猜测,如果您创建此函数作为帮助程序或为自己提供服务,那么我会说根据需要修改它并进行实验。但是,如果它位于框架的高度结构化部分,则修改它可能会破坏某些内容。
关于javascript - 传递给 JavaScript 函数的参数数量是否需要与函数中定义的数量相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46453590/