React Native 没有模拟器我怎么使用firebase?

b0zn9rqh  于 2023-01-09  发布在  React
关注(0)|答案(2)|浏览(181)

我正在学习firebase,我查看了这个教程关于认证的内容。(https://www.youtube.com/watch?v=rbuSx1yEgV8&t=502s)。在这个视频中,模拟器似乎是必不可少的,但是我想与服务器通信。我该怎么做?如果我不初始化auth模拟器(通过删除connectEmulator()函数),我只会得到错误“auth/network-request-failed”。

const firebaseConfig = {
        //...
    };
    
    const user = {
        email: 'user@test.me',
        password: 'test1234'
    }

    function func() {
        createUserWithEmailAndPassword(auth, user.email, user.password)
        .then((userCredential) => {
            const user = userCredential.user;
            console.log(user)
        })
        .catch((error) => {
            console.log(error)
            // ..
        });         
    }

正如你从视频的第7分37秒看到的,我收到了他的问题!所以我想我走错了路。有人能帮帮我吗?我会非常感激的。

7y4bm7vi

7y4bm7vi1#

您 * 应该 * 能够向服务器进行身份验证。

模拟器是可选的。就我个人而言,我很少使用它,基本上总是使用真正的在线Firebase服务器。但是,在您能够与服务器进行身份验证之前,还有许多步骤。

步骤1.检查是否已正确复制配置

转到此链接,但将PROJECT_ID替换为您的实际项目ID:
https://console.firebase.google.com/u/0/project/PROJECT_ID/settings/general/
检查是否已将此的值从该页面正确复制到应用程序代码中。如果尚未"添加应用程序",则可能需要单击"添加应用程序"以显示此配置。

const firebaseConfig = { 
    ... blah blah ... 
};

步骤2.检查是否已启用"登录提供程序"

转到此链接(同样,PROJECT_ID应替换为您的项目ID):

https://console.firebase.google.com/u/0/project/PROJECT_ID/authentication/providers

至少需要打开其中一个提供程序,如下所示:

步骤3.您的代码看起来不错。

我假设您已经正确地设置了auth-我们在上面的代码片段中看不到这一点。
请将您在控制台上看到的错误消息以文本形式粘贴到您的问题中。
您可能希望按如下方式加强调试:

function func() {
    console.log(`user: ${JSON.stringify(user,null,2)}`)
    createUserWithEmailAndPassword(auth, user.email, user.password)
    .then((userCredential) => {
        console.log(`userCredential.user: ${JSON.stringify(userCredential.user,null,2)}`)
    })
    .catch((error) => {
        console.error(error)
    });         
}

这是一件小事,但我建议避免使用相同的变量名user来表示两个不同的东西。Javascript会将它们分开,但我们作为程序员有时会在回顾代码时感到困惑。

步骤4.确保您已授权您正在使用的域。

请访问:
https://console.firebase.google.com/u/0/project/PROJECT_ID/authentication/settings
确保您已授权从中"调用" Firebase服务器的域。

If your app is running on "127.0.0.1" instead of "localhost", you might need to add that IP address too. Or if you have deployed, the deployed domain.

l7wslrjt

l7wslrjt2#

更新:我的项目在仿真器上不起作用。在真实的设备上它起作用。

相关问题