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

时间:2019-03-17 12:34:29

标签: node.js firebase firebase-authentication google-cloud-functions

在用于Firebase处理程序的onCreate身份验证云函数中,如何判断用户是否匿名,例如我在isAnonymousonAuthStateChanged响应中在客户端获得的onIdTokenChanged属性?

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

3 个答案:

答案 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: [],