NodeJS 在onCreate firebase云函数中,如何判断用户是否是“匿名”的?

h43kikqp  于 2023-03-17  发布在  Node.js
关注(0)|答案(3)|浏览(105)

在我的onCreate auth cloud函数firebase handler中,我如何判断用户是否是匿名的,例如,我在客户端上的onAuthStateChangedonIdTokenChanged响应中获得的isAnonymous属性?

exports.createHandler = functions.auth.user().onCreate((user, context) => {
  let uid = user.uid,
      isAnonymous = ????;
});
brc7rcf0

brc7rcf01#

似乎您无法从Admin SDK获取此信息。SDK中没有允许获取此信息的方法。
原因是“isAnonymous只是一个客户端构造”,如下所述:https://github.com/firebase/firebase-admin-node/issues/127 .
isAnonymous只是客户端构造。如果使用signInAnonymously()创建用户,则此标志设置为true(仅限客户端)。例如,您可以使用createUser,只创建一个没有任何配置文件信息的用户(没有电子邮件,电话,密码,等等)。那会被认为是匿名的吗?如果你只用一封电子邮件创建一个用户呢?自定义auth用户呢?你也可以从一个非匿名帐户中取消所有提供者的链接。这个用户会变成匿名的吗?
基本上,你需要应用你自己的标准来定义匿名用户的构成。当你列出用户时,你也许可以检查没有链接提供商,没有为用户设置电子邮件/电话号码等。

vcirk6k6

vcirk6k62#

我知道我迟到了,但也许这能帮上忙。
对我来说,从auth令牌获取提供程序信息工作正常:
上下文.身份验证.令牌.firebase.登录提供程序

g6ll5ycj

g6ll5ycj3#

我已经在模拟器中进行了测试,发现匿名用户没有providerData信息。
函数中的密码用户onCreate触发器返回

providerData: [
  {
    providerId: 'password',
    email: '********************',
    federatedId: '************',
    rawId: '***************',
    toJSON: [Function]
  }
]

匿名用户返回

providerData: [],

相关问题