您如何判断onCreate firebase云功能中的用户是否“匿名”?

Mik*_*ike 1 node.js firebase firebase-authentication google-cloud-functions

在我的onCreate用于Firebase处理程序的auth云函数中,如何判断用户是否匿名,例如,isAnonymous我在onAuthStateChangedonIdTokenChanged响应中在客户端上获得的属性?

exports.createHandler = functions.auth.user().onCreate((user, context) => {
  let uid = user.uid,
      isAnonymous = ????;
});
Run Code Online (Sandbox Code Playgroud)

Ren*_*nec 6

看来您无法从Admin SDK获得此信息。SDK中没有方法可以获取它。

原因是“ isAnonymous仅是客户端构造”,如此处所述:https : //github.com/firebase/firebase-admin-node/issues/127

isAnonymous只是一个客户端构造。如果使用创建用户 signInAnonymously(),则此标志设置为true(仅客户端)。例如,您可以使用createUser并仅创建一个没有任何个人资料信息(没有电子邮件,电话,密码等)的用户。会被认为是匿名的吗?如果您仅用电子邮件创建一个用户呢?自定义身份验证用户呢?您还可以从非匿名帐户取消链接所有提供程序。该用户会成为匿名用户吗?

基本上,您需要应用自己的匿名用户构成标准。当您列出用户时,您也许可以检查是否未链接任何提供程序,并且未在用户上设置任何电子邮件/电话号码,等等。

  • 如在Github上的同一评论中所述,您可以检查是否没有提供者与用户记录相关联。创建时没有身份提供者的用户可能是匿名用户。请参阅https://firebase.google.com/docs/reference/functions/functions.auth.UserRecord#providerData (3认同)
  • Frank 提供的链接似乎已更改,请在此处找到 UserRecord api https://firebase.google.com/docs/reference/admin/node/admin.auth.UserRecord.html#providerdata (2认同)