如何修复 React-Native 中的 Firebase Cloud Functions 错误请求?
How to fix a Firebase Cloud Functions Bad Request in React-Native?
我对 Firebase 云功能相当陌生,我一直在尝试使用 FB 将 Stripe 集成到我的 RN 项目中,但一直收到错误的请求响应。当我尝试 运行 这个时,我会看到一些东西:
- 请求缺少正文。
- 请求无效,无法处理。
- 错误请求 (400)。
有人知道我应该从这里去哪里吗?
在我的 index.js 文件中:
exports.payWithStripe = functions.https.onCall(async (data, response) => {
try {
const paymentIntent = await stripe.paymentIntents.create({
data: {
amount: 100,
currency: "usd",
payment_method_types: ["card"]
}
});
const clientSecret = paymentIntent.client_secret;
response.json({
clientSecret: clientSecret,
})
} catch (e) {
console.log(e.message);
response.json({ error: e.message });
}
})
在应用端:
const fetchPaymentIntentClientSecret = async () => {
const response = await fetch(`${FUNCTION_URL}/create-payment-intent`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
});
const { clientSecret, error } = await response.json();
return { clientSecret, error };
}
您的云函数是 Callable Cloud Function, as we can see from the code: functions.https.onCall()
. As explained in the doc "HTTPS callable functions are similar but not identical to HTTP functions"
您应该使用 JS SDK 的特定方法从您的应用中调用它,如 here 所述。
可以通过 fetch(或用于从浏览器制作 XMLHttpRequests
的任何其他库)调用它,但是您需要遵循 Protocol specification for https.onCall
,这并不简单。所以强烈推荐使用SDK。
我对 Firebase 云功能相当陌生,我一直在尝试使用 FB 将 Stripe 集成到我的 RN 项目中,但一直收到错误的请求响应。当我尝试 运行 这个时,我会看到一些东西:
- 请求缺少正文。
- 请求无效,无法处理。
- 错误请求 (400)。
有人知道我应该从这里去哪里吗?
在我的 index.js 文件中:
exports.payWithStripe = functions.https.onCall(async (data, response) => {
try {
const paymentIntent = await stripe.paymentIntents.create({
data: {
amount: 100,
currency: "usd",
payment_method_types: ["card"]
}
});
const clientSecret = paymentIntent.client_secret;
response.json({
clientSecret: clientSecret,
})
} catch (e) {
console.log(e.message);
response.json({ error: e.message });
}
})
在应用端:
const fetchPaymentIntentClientSecret = async () => {
const response = await fetch(`${FUNCTION_URL}/create-payment-intent`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
});
const { clientSecret, error } = await response.json();
return { clientSecret, error };
}
您的云函数是 Callable Cloud Function, as we can see from the code: functions.https.onCall()
. As explained in the doc "HTTPS callable functions are similar but not identical to HTTP functions"
您应该使用 JS SDK 的特定方法从您的应用中调用它,如 here 所述。
可以通过 fetch(或用于从浏览器制作 XMLHttpRequests
的任何其他库)调用它,但是您需要遵循 Protocol specification for https.onCall
,这并不简单。所以强烈推荐使用SDK。