在用于Firebase处理程序的onCreate
身份验证云函数中,如何判断用户是否匿名,例如我在isAnonymous
或onAuthStateChanged
响应中在客户端获得的onIdTokenChanged
属性?
exports.createHandler = functions.auth.user().onCreate((user, context) => {
let uid = user.uid,
isAnonymous = ????;
});
答案 0 :(得分:3)
似乎您无法从Admin SDK获得此信息。 SDK中没有方法可以获取它。
原因是“ Object.keys
只是一个客户端构造”,如此处所述:https://github.com/firebase/firebase-admin-node/issues/127。
isAnonymous
只是一个客户端构造。如果用户使用isAnonymous
,此标志设置为true(仅客户端)。对于 例如,您可以使用createUser,而无需创建任何用户 个人资料信息(无电子邮件,电话,密码等)。那会是 被认为是匿名的?如果您只创建一个用户 电子邮件?自定义身份验证用户呢?您也可以取消所有链接 来自非匿名帐户的提供商。该用户会成为 匿名?基本上,您需要应用自己的匿名标准 用户构成。当您列出用户时,您也许可以检查是否 提供程序已链接,并且没有在用户上设置任何电子邮件/电话号码,等等。
答案 1 :(得分:2)
我知道我来晚了,但这也许可以帮助某人。
对我来说,从auth令牌获取提供商信息的工作正常:
context.auth.token.firebase.sign_in_provider
答案 2 :(得分:1)
我在模拟器中测试过,发现匿名用户没有 providerData 信息。
functino 中的一个密码用户 onCreate 触发器返回
providerData: [
{
providerId: 'password',
email: '********************',
federatedId: '************',
rawId: '***************',
toJSON: [Function]
}
]
匿名用户返回
providerData: [],