ошибка firebase Не обнаружена (в обещании) Ошибка FirebaseError: Отсутствуют или недостаточно разрешений

# #javascript #reactjs #firebase

Вопрос:

Я пытаюсь внедрить платежную систему stripe с помощью своего приложения react, в котором я использую firebase для хранения данных пользователей. Я перенял проект у другого разработчика, но столкнулся с проблемами, пытаясь получить идентификатор пользователя для объединения информации.

Я получаю ошибку Uncaught (in promise) FirebaseError: Missing or insufficient permissions. при запуске моего checkout.js страница… вот что у меня есть:

user.js

     class UserStripe {
    constructor({ db, auth, firestoreEnvironment }) {
      this.db = db
      this.auth = auth
      this.collections = new StripeCollectionUtil({ db, firestoreEnvironment, auth })
      this.env = firestoreEnvironment
    }
  
    doCreateUser(uid, email, name, companyName) {
      if (!companyName) companyName = null
      return this.collections.getCollectionFor('users').doc(uid).set({
        email,
        name,
        companyName,
        areasAndTasks: JSON.stringify(defaultAreasAndTasks),
        environment: this.env
      })
    }
  
    getUserProfile() {
      let uid = this.auth.currentUser.uid
      return this.collections.getCollectionFor('users').doc(uid).get().then(doc => doc.data())
    }
  
    getAreasAndTasks() {
      return this.getUserProfile().then((userProfile) => JSON.parse(userProfile.areasAndTasks))
    }
  }
  
  module.exports = UserStripe
 

и это мое checkout.js

     import firebase from 'firebase';
import getStripe from './stripe';

const firestore = firebase.firestore();

export async function createCheckoutSession(){

    // without uid
    
    // return firestore.collection()
    const checkoutSessionRef =  await firestore.collection('customers').doc().collection('checkout_sessions').add(
        
        {price : 'price_1IGEdTKDPaWWeL1ymwWH5Ubb',
         success_url : window.location.origin,
         cancel_url: window.location.origin,
    }
    );

    checkoutSessionRef.onSnapshot(async (snap) => {
        const {sessionid} = snap.data();
        if (sessionid) {
             const stripe = await getStripe()
             stripe.redirectToCheckout({sessionid})
        }
    });
}
 

как я могу импортировать uid на страницу оформления заказа, чтобы не получить эту ошибку?

Комментарии:

1. я бы рекомендовал заглянуть в правила firestore вашего проекта, там есть правило, запрещающее доступ на чтение/запись к одному из документов, к которым вы пытаетесь получить доступ в приведенных выше кодах