基于广泛的搜索,曾以为反引号可以解决问题,但没有骰子。措手不及为什么代码变量不会传递到另一个变量。使用了反引号,$ {variable},没有骰子。想法?
exports.stripeConnect = functions.https.onRequest((req, res) => {
var code = req.query.code;
const ref = admin.database().ref(`/stripe_advisors/testing`);
return ref.update({ code: code });
var request = require('request');
var dataString = `client_secret=sk_test_8gxfc3KHDoPC4pyFvitYcwf1&code=${code}&grant_type=authorization_code`;
var options = {
url: 'https://connect.stripe.com/oauth/token',
method: 'POST',
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
});
答案 0 :(得分:0)
我认为您只需要在变量'dataString'中串联的变量'code'的值,就可以使用串联运算符(+)。就您而言:
dataString='client_secret=sk_test_8gxfc3KHDoPC4pyFvitYcwf1&code='**+code+**'&grant_type=authorization_code';
我根据您所写的内容编写了一个测试代码:
var code = 'Hello';
var dataString = \`${code}, World\`;
console.log(dataString);
输出为:Hello,World
因此,在上面的代码中,dataString应该在代码变量中具有值,只需打印变量并进行测试即可。
您无法在主体中传递查询字符串,请检查您在主体中传递的内容是否正确。
答案 1 :(得分:0)
在另一个问题中感谢另一个发贴人,得知字符串不是问题@ all,而是JS异步性质。以下是使用Firebase功能执行Stripe Connect入职过程的工作代码。享受吧!
var rp = require('request-promise');
//Stripe Connect
exports.stripeConnect = functions.https.onRequest((req, res) => {
var code = req.query.code;
const ref = admin.database().ref('/stripe_advisors/testing');
var dataString = `client_secret=sk_test_8gxfc3KHDoPC4pyFvitYcwf1&code=${code}&grant_type=authorization_code`;
var options = {
url: 'https://connect.stripe.com/oauth/token',
method: 'POST',
body: dataString
};
rp(options)
.then(parsedBody => {
return ref.update({ code: code });
})
.catch(err => {
console.log(err);
res.status(500).send(err);
});
});