Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase上的异步等待匿名登录不等待用户注册_Javascript_Firebase_Vue.js_Firebase Authentication - Fatal编程技术网

Javascript 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');

我有一个Vue应用程序,其中有以下代码片段用于处理匿名登录我的网站。这基本上是在created()钩子中

这里的模式是Firebase自己在文档中推荐的

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块中,我的错误是的,很不幸。我只是编辑了上面的控制台日志。