bounty将在5天后过期。回答此问题可获得+100声望奖励。Ben希望引起更多人关注此问题。
我有一个更新用户自定义声明的服务器函数。
exports.onEmployeeUpdated = functions.firestore
// When a employee document is updated, if <condition> update isApproved custom claim
.document('employees/{employeeId}')
.onUpdate(async (change, context) => {
// Update the user's existing claims
const uid = context.params.employeeId
return getAuth()
.getUser(uid)
.then((userRecord) => {
let claims = userRecord.customClaims
claims['isApproved'] = false
// Assign the new claims
return getAuth().setCustomUserClaims(uid, claims).then(() => {
// reload() here
})
})
.catch((error) => {
return `Custom claim not updated because no user with id ${uid} exists`
})
}
})
我的理解是reload()
可以是used to refresh the token from the server,但是我不清楚如何实际调用reload()
。
2条答案
按热度按时间zzwlnbp81#
据我所知,您不能强制客户端刷新服务器端的令牌,您链接的reload方法实际上是Node.js client SDK的一部分,您链接的问题描述了如何通过从服务器端取数据来重载客户端的用户。
根据文档,您可以通过调用
getIdToken(true)
“刷新客户端 *”上的ID标记 *。示例:(使用JS v9 SDK):
webghufk2#
总而言之,您不能强制客户端刷新服务器端的令牌。相反,您可以通过调用getIdToken(true)来刷新客户端的ID令牌。这将强制客户端从服务器获取新令牌,其中将包括更新的自定义声明。