具有自定义令牌的 Firebase 身份验证给出空 uid

Firebase auth with custom token gives null uid

我正在使用 Firebase 的 authWithCustomToken 方法作为通过 auth0 的委托身份验证流程的一部分。

Auth0 通过它的 delegate call, which I then pass to authWithCustomToken 给我一个 JWT。 Firebase 告诉我身份验证成功并给了我一个低于 authData 的值,但这个值的 uid 为空。 AFAIK,我的 Firebase 安全规则必须使用 UID 进行限制,所以似乎出了点问题。

这是 authData 回复:

{ auth: { fb_id: 'auth0|555afce3f3066cf36f5ebd58' },
expires: 1453234943,
token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2ZyZWVmb3JtZXJzLmF1dGgwLmNvbS8iLCJzdWIiOiJhdXRoMHw1NTVhZmNlM2YzMDY2Y2YzNmY1ZWJkNTgiLCJhdWQiOiJQaEpNNzdmVjhVbnl5Rjc3REFKQzdOM1BPRnNoZTRVYSIsImV4cCI6MTQ1MzIzNDk0MywiaWF0IjoxNDUzMTk4OTQzLCJ2IjowLCJkIjp7ImZiX2lkIjoiYXV0aDB8NTU1YWZjZTNmMzA2NmNmMzZmNWViZDU4In0sImF6cCI6InJnZ3VBc1hkT25mY0NTT1FLcTdpU3F2cDRER1ZMQTVUIn0.87DmiUn0TY0G3kpPyiJoK6d-aTKsBNlfHBHbM4R4WMk',
uid: null,
provider: 'custom' }

当您调用 authWithCustomToken() 时,auth 变量完全包含 JWT 中的信息。如果没有auth.uid,可能是因为Auth0没有给token加1。

请注意,Firebase 安全规则不要求存在 uid,拥有一个 uid 是很常见的。但是例如,这个博客 post 谈论 auth0 与 Firebase 不使用 uid:https://www.firebase.com/blog/2014-06-05-auth0-guest-blog.html