在下面的示例中,有没有办法获取写入/ messages/{pushId}/original的用户的uid?
exports.makeUppercase = functions.database.ref('/messages/{pushId}/original')
.onWrite(event => {
// Grab the current value of what was written to the Realtime Database.
const original = event.data.val();
console.log('Uppercasing', event.params.pushId, original);
const uppercase = original.toUpperCase();
// You must return a Promise when performing asynchronous tasks inside a Functions such as
// writing to the Firebase Realtime Database.
// Setting an "uppercase" sibling in the Realtime Database returns a Promise.
return event.data.ref.parent.child('uppercase').set(uppercase);
});
Run Code Online (Sandbox Code Playgroud) javascript firebase firebase-realtime-database google-cloud-functions
我正在深入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)
});
Run Code Online (Sandbox Code Playgroud)
我可以从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' }
}
Run Code Online (Sandbox Code Playgroud)
我希望从文档中可以看到context参数还包含名为"authType"和"auth"的属性,这些属性包含有关发出请求的用户的信息.但是,在尝试了各种各样的事情之后,context.authType和context.auth总是未定义的.
我作为授权用户和未经授权的用户尝试了这一点,没有任何变化.
任何帮助搞清楚为什么没有填充context.authType和context.auth会非常有帮助,谢谢!
我正在使用 Firebase 和 Cloud Firestore 构建一个群组应用程序,用户应该能够在其中创建群组并向其中添加成员。
当用户创建一个组时,我想要一个云触发器在创建组后将该用户添加到组的成员列表中。触发器看起来像这样:
exports.addCreatorAsAdmin = firestore
.document('groups/{group}')
.onCreate((snap, context) => {
if (context.auth == null) { return unauthorizedError() }
const path = `groups/${context.params.group}/members/${context.auth.uid}`;
return db.doc(path).create({});
});
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序、登录用户并创建团队时,该功能被正确触发。但是,我总是遇到未经授权的错误,这意味着它context.auth为空。
TLDR;用户已正确登录,但触发器未经授权。谁能帮我吗?
node.js firebase firebase-authentication google-cloud-functions google-cloud-firestore
使用firestore时是否可以通过context.auth属性获取触发云功能的用户的uid?
exports.updateReport = functions.firestore
.document('groups/{groupId}/reports/{nursingId}')
.onUpdate((change, context) => {
const uid : string | undefined = context.auth?.uid;
})
Run Code Online (Sandbox Code Playgroud)
我发现很多关于同一问题的老问题有许多不同的答案。(该功能有效,该功能有时会工作,或者该功能永远不会工作)
在我的本地设置中,我context.auth总是未定义,所以我不知道我是否犯了错误,或者它根本不起作用。如果是这样的话,是否有其他安全的方式来获取触发相应云功能的用户的uid?
firebase google-cloud-platform google-cloud-functions google-cloud-firestore