【发布时间】:2019-06-28 12:59:51
【问题描述】:
- 我已成功通过电话号码进行身份验证。 (我可以查看
firebase.auth.currentUser是否已登录。) - 然后我调用具有
admin.auth().updateUser(uid, somevalues)的 firebase 管理员路由来设置用户 displayName 和电子邮件。 - 此步骤完成后,我的用户数据更改了 displayName 和电子邮件。(在 firebase 控制台中检查)
在我的身份验证中,我运行
firebase.auth().currentUser.reload()以获取更新的用户数据,但突然出现错误 auth/user-token-expired 我只有在使用 admin.auth().updateUser(....) 后才检查过我的令牌丢失了。如果我不运行此命令,那么我可以毫无问题地执行 firebase.auth().currentUser.reload()。
更新:仅当我在调用 admin.auth().updateUser(....) 时设置了电子邮件,我的应用程序内的令牌才会失效。如果我只更改 displayName 令牌仍然有效。
【问题讨论】:
-
您的 Firebase 帐户中是否还启用了电子邮件身份验证?如果是这样,将令牌失效作为安全预防措施是有意义的。
-
哦。所以我不能同时进行电话身份验证和电子邮件身份验证?
-
不,实际上您可以同时拥有两者(Firebase 实际上建议这样做)。但是,如果您的帐户设置为允许用户使用电子邮件进行身份验证,那么无论您是否知道,我都认为令牌依赖于该凭证。因此,更改凭据(电子邮件地址)将使令牌无效。否则,更容易窃取其他用户的令牌和会话。
-
@misterfancypants 我应该怎么做才能没有这个错误并且仍然能够更改电子邮件?
-
我了解,但我从未见过更改电子邮件后必须重新授权的应用程序或网站。它只是一个糟糕的用户体验。我所做的是从云功能中提取电子邮件更新并从客户端身份验证中执行它。所以我更新了邮箱,没有重新授权。
标签: firebase firebase-authentication react-native-firebase