gpt4 book ai didi

reactjs - Firebase onCreate 向 auth.user 添加自定义声明

转载 作者:行者123 更新时间:2023-12-04 13:35:00 24 4
gpt4 key购买 nike

我正在尝试添加自定义声明, isRegistered 到 firebase。我的firestore还有一个user收集以保留注册信息记录。现在我试图保留一个 isRegistered 自定义声明,但我似乎无法让它工作。

exports.addRegisteredRole = functions.database.ref('/user')
.onCreate((snap, context) => {
return // **I added this later, but the issue still remains.**
admin.auth()
.setCustomUserClaims(context.auth.uid, {isRegistered: true})
.then(() => {
console.log('done', snap)
return {
message: 'done',
data: snap
}
})
.catch(err => {
console.log('something went wrong', err);
return err
})
});
我正在通过以下方式检查此声明,
currentUser.getIdTokenResult()
.then(res => {
console.log(res.claims.isRegistered)
})
(授权用户对象)。即使我重新登录它仍然未定义。我做错了什么,我对firebase很陌生。

最佳答案

问题在于您的 onCreate 触发器。您假设您在 context.auth 对象中获取 uid,这是不正确的。
onCreate 触发器将在您的“用户”集合中添加新文档时自动触发。在这种情况下, context.aut.uid 是未定义的。您应该在函数日志中跟踪它。
您可以通过多种方式实现您的目标

  • 如果用户记录文档以用户Id作为文档名称,可以执行以下操作
  • exports.addRegisteredRole =
    functions.firestore
    .document('test/{docId}')
    .onCreate((snap, context) => {
    admin.auth()
    .setCustomUserClaims(snap.id, { isRegistered: true })
    .then(() => {
    console.log('done', snap)
    return {
    message: 'done',
    data: snap
    }
    })
    .catch(err => {
    console.log('something went wrong', err)
    return err
    })
    })
  • 如果您使用其他名称命名用户记录文档,或者让 Firebase 为您决定名称,那么您必须将 uid 作为文档数据中的一个属性。然后你使用 docSnapshot.data().uid 而不是 docSnapshot.id 如下
  • exports.addRegisteredRole =
    functions.firestore
    .document('test/{docId}')
    .onCreate((snap, context) => {
    admin.auth()
    .setCustomUserClaims(snap.data().uid, { isRegistered: true })
    .then(() => {
    console.log('done', snap)
    return {
    message: 'done',
    data: snap
    }
    })
    .catch(err => {
    console.log('something went wrong', err)
    return err
    })
    })
    祝你好运

    关于reactjs - Firebase onCreate 向 auth.user 添加自定义声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62720162/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com