我正在深入Firebase功能(服务器端),并且无法从功能中获取身份验证信息。在其最简单的形式中,我将部署到Firebase函数的index.ts如下所示:
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();
export const createOrganization = functions.firestore.document("Organizations/{organizationId}").
onCreate((snap, context) => {
console.log(context)
});
我可以从Firebase的日志记录中看到这个函数确实被调用了,并且记录的上下文看起来像这样:
{ eventId: 'XXXXX-XXXX-XXXX',
timestamp: '2018-04-13T21:37:33.349247Z',
eventType: 'google.firestore.document.write',
resource:
{ service: 'firestore.googleapis.com',
name: 'projects/XXXX/databases/(default)/documents/Organizations/XXXXXXXXXXXX'
},
params: { organizationId: 'XXXXXXXXXXXX' }
}
我希望从文档中可以看出context参数还包含名为" authType"的属性。和" auth"包含有关发出请求的用户的信息。但是,在尝试了各种各样的事情之后,context.authType和context.auth总是未定义的。
我已尝试将此作为授权用户和未经授权的用户进行更改。
任何帮助找出为什么没有填充context.authType和context.auth会非常有用,谢谢!
答案 0 :(得分:7)
仅为Firebase产品提供身份验证信息,这些产品为每个触发事件的云功能提供身份验证信息。目前,只有实时数据库支持此功能。 Firestore支持正在进行中。从理论上讲,云存储也可以提供支持。
它不一致,因为Cloud Functions for Firebase中的每个事件提供程序都由不同的团队驱动,每个团队都有不同的实现和优先级。