firebase__WEBPACK_IMPORTED_MODULE_3___default.a.auth.onAuthS



我正在进行条带扩展,但当我传递uid时,它会给我错误"firebase__WEBPACK_IMPORTED_MODULE_3___default.a.a.auth.onAuthStateChanged不是函数"。。。那么,有什么建议我该如何修复这个错误吗??

这是我的代码:

import {loadStripe} from '@stripe/stripe-js';
import firebase from 'firebase';

const firestore = firebase.firestore();
firebase.auth().onAuthStateChanged((user) => {
if(user) {
console.log(user.uid) ;
}
});
export async function createCheckoutSession(uid){
firebase.auth.onAuthStateChanged((user) => {
if (user){
const checkoutSessionRef =  firestore
.collection('customers')
.doc(user.uid)
.collection('checkout_sessions')
.add({
price: 'price id',
success_url: window.location.origin,
cancel_url: window.location.origin,
});
// Wait for the CheckoutSession to get attached by the extension
checkoutSessionRef.onSnapshot((snap) => {
const { error, sessionId } = snap.data();
if (error) {
// Show an error to your customer and 
// inspect your Cloud Function logs in the Firebase console.
alert(`An error occured: ${error.message}`);
}
if (sessionId) {
// We have a session, let's redirect to Checkout
// Init Stripe
const stripe =   loadStripe('pk_test_1234');
stripe.redirectToCheckout({ sessionId });
}
});
}
}
)}  

有什么建议吗?我该如何修复这个错误???

firebase中的onAuthStateChanged函数只能在客户端工作。根据我的理解,您试图检查用户是否已登录或注销,但在后端本身调用了onAuthStateChanged侦听器。

因此,将逻辑或onAuthStateChanged逻辑移动到前端代码。如果你真的想使用一个逻辑来检查用户是否已经通过后端本身登录,那么你可能不得不求助于云功能,并使用firebase adming SDK来处理它。

此外,loadStripe承诺应该在文件的顶部处理,以避免在每次调用时重新创建Stripe对象。

相关内容

  • 没有找到相关文章

最新更新