Stripe 和 Firebase:FirebaseError:collection() 的第一个参数应为 CollectionReference、DocumentReference 或 Fireba
Posted
技术标签:
【中文标题】Stripe 和 Firebase:FirebaseError:collection() 的第一个参数应为 CollectionReference、DocumentReference 或 FirebaseFirestore【英文标题】:Stripe and Firebase: FirebaseError: Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore 【发布时间】:2021-12-28 23:19:49 【问题描述】:我正在尝试在我的新 Firebase 应用 (React) 上设置条带。我正在使用 12 天前发布的新版 Firebase (9) 和新的 Stripe 集成:
https://www.npmjs.com/package/@stripe/firestore-stripe-payments
我在这里要做的是为订阅加载条带托管的结帐。
这是代码:
import React, useEffect from 'react'
import createCheckoutSession from "@stripe/firestore-stripe-payments";
import payments from './Firebase'
export default function Stripetest(props)
async function checkout(e)
e.preventDefault();
try
const session = await createCheckoutSession(payments,
price: "price_1JwyWZIweuKs6S3NBDjBqiiw",
);
window.location.assign(session.url);
catch (e)
console.log(e);
return (
<>
<button onClick=checkout>Checkout</button>
</>
)
这是导出“付款”的 Firebase.js:
// Import the functions you need from the SDKs you need
import initializeApp from "firebase/app";
import getAnalytics from "firebase/analytics";
import getFirestore, collection, getDocs from 'firebase/firestore';
import getAuth from 'firebase/auth';
import getStripePayments from "@stripe/firestore-stripe-payments";
import getApp from "@firebase/app";
// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries
// Your web app's Firebase configuration
// For Firebase JS SDK v7.20.0 and later, measurementId is optional
const firebaseApp = initializeApp(
apiKey: "AIzaSxxxxxxxxxx",
authDomain: "bxxxxxxxxxx6.firebaseapp.com",
projectId: "bxxxxxxxx6",
storageBucket: "xxxxxxxx.appspot.com",
messagingSenderId: "xxxxxxxxxxxxx",
appId: "1:xxxxxxx",
measurementId: "G-Kxxxxx"
);
export const db = getFirestore(firebaseApp)
export const auth = getAuth(firebaseApp)
export default firebaseApp;
const app = getApp();
export const payments = getStripePayments(app,
productsCollection: "products",
customersCollection: "customers"
);
我在“getStripePayments(APP, ”) 中尝试了“app”和“firebaseApp”,但是当我点击结帐按钮时,总是出现同样的错误:
FirebaseError:collection() 的第一个参数应为 CollectionReference、DocumentReference 或 FirebaseFirestore
【问题讨论】:
看来您不是唯一遇到此问题的人。我建议你在这个 GitHub 问题上添加评论,因为它似乎是库中的一个错误:github.com/stripe/stripe-firebase-extensions/issues/304 是的,这是一个错误。现在他们已经修好了! 【参考方案1】:我从以下位置降级:
"@stripe/firestore-stripe-payments": "0.0.4",
到
"@stripe/firestore-stripe-payments": "0.0.3",
在 package.json 中,错误停止发生,现在一切正常
【讨论】:
以上是关于Stripe 和 Firebase:FirebaseError:collection() 的第一个参数应为 CollectionReference、DocumentReference 或 Fireba的主要内容,如果未能解决你的问题,请参考以下文章
使用 React Native/Stripe/Firebase 一次性付款
使用 Firebase HTTP 函数(Firebase、Stripe OAuth、React (JSX) 前端)将授权代码返回到 Stripe
从 Firebase Cloud Function 连接到 Stripe 时出错
Firebase + stripe + react native 通知客户端 firebase 功能已完成
Stripe 和 Firebase:FirebaseError:collection() 的第一个参数应为 CollectionReference、DocumentReference 或 Fireba