3 回答
TA贡献1817条经验 获得超14个赞
如上述@Bery的回答所述,1.0.0Firebase Functions SDK 版本引入了一个新context.auth对象,其中包含诸如的身份验证状态uid。有关更多详细信息,请参见“用户身份验证信息的新属性”。
原始答案(1.0.0之前的版本):
是的,尽管目前尚未记录,但从技术上讲这是可能的。该uid存储与所述event.auth对象。如果从管理情况(例如,从Firebase控制台数据查看器或管理SDK)触发数据库云功能,则值event.auth是:
{
"admin": true
}
从未经身份验证的引用触发数据库云功能时,值为event.data:
{
"admin": false
}
最后,当从经过身份验证但不是管理员的参考触发数据库云功能时,其格式event.auth为:
{
"admin": false,
"variable": {
"provider": "<PROVIDER>",
"provider_id": "<PROVIDER>",
"user_id": "<UID>",
"token": {
// Decoded auth token claims such as sub, aud, iat, exp, etc.
},
"uid": "<UID>"
}
}
根据上述信息,获取uid触发事件的用户的最佳选择是执行以下操作:
exports.someFunction = functions.database.ref('/some/path')
.onWrite(event => {
var isAdmin = event.auth.admin;
var uid = event.auth.variable ? event.auth.variable.uid : null;
// ...
});
只要注意,在上面的代码,uid就null即使isAdmin是true。您的确切代码取决于您的用例。
警告:这是目前未记录的行为,因此我将向我发出通常的警告:“未记录的功能将来可能随时更改,恕不另行通知,即使在非主要版本中也是如此。”
添加回答
举报