node.js - 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 密钥初始化管理员。
任何建议,将不胜感激
解决方案
推荐阅读
- javascript - 登录后,Socket.io 在浏览器中发出和重定向/存储会话变量
- java - 带有弹性负载均衡器的 AWS EC2 不发送 SSL 证书
- javascript - 在手动重新加载页面之前,getServerSideProps 上的请求没有 cookie
- javascript - 用 jest 测试中间件
- css - 素材社区图标,设置大小会导致android崩溃?
- matlab - 如何将输入信号导入 simulink 项目?
- ruby - 在页面中拦截 HTTP 请求
- visual-c++ - 尝试在调试模式下运行 UnitTest 并在 CppUnitTest.h 文件中引发异常?
- list - 如何使用地图
使用 DropDownMenu 小部件颤振 - javascript - 家长仅在具有学生级帐户的 Chromebook 上不会收到来自 iframe 的 postMessage