首页 > 解决方案 > Firebase 可调用函数权限

问题描述

我的 Angular 应用在​​ Firebase 中有两个功能。一个触发器(document.create)和一个可调用的。触发器执行没有问题。可调用的正在引发权限问题 Error: 7 PERMISSION_DENIED: Missing or insufficient permissions

我的 index.ts

import * as admin from 'firebase-admin';

admin.initializeApp();

const triggerFN = require('./trigger-function');
const callableFN = require('./callable-function');

exports.triggerFN = triggerFN.triggerFN;
exports.callableFN = callableFN.callableFN;

我的可调用函数

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

export const callableFN = functions.https.onCall(async (data, context) => {
      console.log('line 1')

    return admin.firestore().collection('users').where('email', '==', 'email@home.com').get()
       .then((qSnap: any) => {
        console.log('line 2');
        // this never gets hit
        return {state: 'ok'}
       })
       .catch(error => {
            console.log(error);
            return {state: 'error', details: error}
       });
       console.log('line 3')  

    } catch (error) {
        console.log(error)
        return {state: 'error'};
    }
})

我的触发功能

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

export const triggerFN = functions.firestore.document('invites/{gameId}').onCreate( async (snap, context) => {
    console.log(snap.data())
    try {
         admin.firestore().collection('users').where('email', '==', 'email@home.com).get()
        .then((qSnap: any) => {

            }).catch((err: any) => {
                console.error(err);
            }) ;
    } catch (error) {
        console.log(error);
    }
})

还有我的权限

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

这两个函数都在模拟器中工作。

该函数执行,因为我可以记录信息。它不可能是安全规则,因为触发功能可以正常工作。它看起来像 context.auth?未应用于可调用函数。

我已经尝试过Firebase Cloud Functions Firestore 触发器产生:错误:7 PERMISSION_DENIED:缺少权限或权限不足

我尝试将这些功能重新部署到不同的区域。我尝试使用 json 密钥初始化管理员。

任何建议,将不胜感激

日志的屏幕截图

标签: node.jsfirebasegoogle-cloud-functions

解决方案


推荐阅读