Javascript Firebase上的异步等待匿名登录不等待用户注册
我有一个Vue应用程序,其中有以下代码片段用于处理匿名登录我的网站。这基本上是在created()钩子中 这里的模式是Firebase自己在文档中推荐的Javascript Firebase上的异步等待匿名登录不等待用户注册,javascript,firebase,vue.js,firebase-authentication,Javascript,Firebase,Vue.js,Firebase Authentication,我有一个Vue应用程序,其中有以下代码片段用于处理匿名登录我的网站。这基本上是在created()钩子中 这里的模式是Firebase自己在文档中推荐的 async created() { app.auth().onAuthStateChanged(async (curUser) => { if (!curUser) { console.log('auth state change triggered. NO current user');
async created() {
app.auth().onAuthStateChanged(async (curUser) => {
if (!curUser) {
console.log('auth state change triggered. NO current user');
await app.auth().signInAnonymously().catch((error) => {
// Handle Errors here.
let errorCode = error.code;
let errorMessage = error.message;
console.log("Error: " + errorCode + errorMessage)
});
const curUser = firebase.auth().currentUser;
console.log('curUser after anon sign in: ', curUser.uid);
}
else {
console.log('current user: ', curUser.uid)
}
}
}
因此,当用户第一次进入站点时,会触发此事件。稍后在另一个地方,用户使用GoogleAuth登录
当用户使用Auth().signOut()从Google Auth注销时,我的问题就开始了代码>将触发onAuthStateChanged()
,用户将登录两次
当我做以下动作时
- 进入站点(根据代码获取匿名登录uuid)
- 使用Google Auth登录(获取Google Auth)
- 从Google Auth注销(触发器异步创建(){
auth().onAuthStateChanged())
Console打印以下内容:
current user: O8CxixbNhmZPfrtoVC7cX5S5GmC3
current user: SDI689qRCZWhxJ7VoZJF75Ouazy2
auth state change triggered. NO current user
current user: Q2vjaZE0ljThMot1GtOUlDwR4BE2
curUser after anon sign in: Q2vjaZE0ljThMot1GtOUlDwR4BE2
current user: ziGpZf7aUwU6hXYvaAHfBD1fmnu2
第一个uuid(5GmC3
)是来自Google Auth的第一个非uuid,第二个(Ouazy2
)是Google Auth。正如您可以看到的,从Google triggers Auth()注销。onAuthStateChanged()三次。首先,通过在if
中测试true,然后测试两次条件false,它从中获取Q2vjaZE0ljThMot1GtOUlDwR4BE2
,然后打印两个不同的uuid。我确保我没有在任何其他地方调用auth()。signinanoymously()
这里可能有什么问题?您确定console.log('curUser-after-on-sign-in:',curUser);
输出除null
以外的任何内容(或其他错误值)-因为这不可能发生,因为只有当curUser
错误时,代码才会运行-请仔细检查控制台输出我很抱歉。在清理时,我删除了一行额外内容:const curUser=firebase.auth().currentUser;
我现在将它添加到上面。该代码不会运行…您不能声明一个与函数参数同名的const
-不,等等,它在if块中,我的错误是的,很不幸。我只是编辑了上面的控制台日志。您确定console.log('curUser after on sign-in:',curUser);
输出除null
(或另一个错误值)以外的任何内容-因为这不可能发生,因为该代码只有在curUser
是错误的情况下才会运行-请仔细检查控制台输出我很抱歉。在清理时,我删除了一行额外内容:const curUser=firebase.auth().currentUser;
我现在将它添加到上面。该代码不会运行…您不能声明一个与函数参数同名的const
-不,等等,它在if块中,我的错误是的,很不幸。我只是编辑了上面的控制台日志。