成功的 Firebase 身份验证后 React Native App 无法导航

Posted

技术标签:

【中文标题】成功的 Firebase 身份验证后 React Native App 无法导航【英文标题】:React Native App not navigating after successful firebase auth 【发布时间】:2020-10-04 21:30:35 【问题描述】:

我正在使用 expo 构建我的第一个 react 原生应用程序,到目前为止效果很好,但我只对一个问题感到沮丧:

成功登录后,我的应用没有重定向到“个人资料”。以下是我使用 firebase 处理登录/注册的方式:

class Login extends React.Component 

state = 
    email: '',
    password: ''


handleLogin = () => 
    const  email, password  = this.state
         Firebase.auth()
        .signInWithEmailAndPassword(email, password) 
        .then(() => this.props.navigation.navigate('Profile'))
        .catch(error => console.log(error))


render() 
    return (
        <View style=styles.container>
            <Text style=styles.headerText>traderank</Text>
            <TextInput
                style=styles.inputBox
                value=this.state.email
                onChangeText=email => this.setState( email )
                placeholder='email'
                autoCapitalize='none'
            />
            <TextInput
                style=styles.inputBox
                value=this.state.password
                onChangeText=password => this.setState( password )
                placeholder='password'
                secureTextEntry=true
            />
            <TouchableOpacity 
            style=styles.button
            onPress=this.handleLogin>
                <Text style=styles.buttonText>login</Text>
            </TouchableOpacity>

            <Button 
            title="no account? sign up" 
            onPress=() => this.props.navigation.navigate('Signup')/>
        </View>
    )


注册同这个handleAuth函数:

handleSignUp = () => 
    const  email, password  = this.state
    Firebase.auth()
        .createUserWithEmailAndPassword(email, password)
        .then(() => this.props.navigation.navigate('Profile'))
        .catch(error => console.log(error))

1)我知道这不是我的导航器的问题,因为我可以通过单击按钮在登录/注册之间切换。

2)我知道这不是firebase的问题,因为我可以创建一个新用户并在firebase控制台中看到该用户

3)点击登录时出现此错误:

错误:创建存储目录失败。Error Domain=NSCocoaErrorDomain Code=4 "文件“RCTAsyncLocalStorage”不存在。"

UserInfo=NSFilePath=/Users/me/Library/Developer/CoreSimulator/Devices/264989F0-2165-4E91-8EA3-48316590DE5A/data/Containers/Data/Application/A49D7AF5-C660-4292-9576-A986C3F97C38/Documents /ExponentExperienceData/%40anonymous%project-numbers/RCTAsyncLocalStorage, NSUnderlyingError=0x600000778180

Error Domain=NSPOSIXErrorDomain Code=2 "没有这样的文件或目录"

当我点击注册时它也应该重定向,但是当我创建一个新用户时,我看到这个登录到我的终端[当我点击注册时正在创建用户,我在 firebase 控制台中看到用户]:

创建存储目录失败。Error Domain=NSCocoaErrorDomain Code=4 "文件“RCTAsyncLocalStorage”不存在。"

在这两种情况下,RCTAsyncLocalStorage 似乎都存在问题。通常我可以用谷歌搜索错误并找出它,但在这方面没有找到太多。我正在使用 react native expo ~39.0.2,在 iPhone 11 (13.7) 上运行它。

提前致谢

【问题讨论】:

你能显示你的登录屏幕的测试吗? 好的,我一到家就会更新! @WenW 更新为完全登录 我的登录屏幕看起来不错。您是否有条件地在导航器中呈现个人资料页面?类似于这里正在做什么? reactnavigation.org/docs/auth-flow @WenW 还没有条件渲染。我应该那样做吗? 【参考方案1】:

我认为这个错误的发生是因为你的模拟器有问题, 尝试更改它或使用其他手机并在其上运行应用程序。

有一个与您的问题相关的问题, 你可以从here查看它

【讨论】:

太棒了!我改变了模拟器来做一个不同的设备,它工作了 - 谢谢!【参考方案2】:

同样的错误发生在我身上,确实问题出在 ios 模拟器上,为了解决它,我只需转到设备选项并擦除模拟器的所有数据和内容。这样问题就解决了

【讨论】:

以上是关于成功的 Firebase 身份验证后 React Native App 无法导航的主要内容,如果未能解决你的问题,请参考以下文章

成功身份验证后,Flutter Firebase 数据库权限被拒绝

使用 React Redux Redux-Thunk 进行 Firebase 身份验证

成功登录后 SwiftUI Firebase 身份验证关闭视图

Firebase 身份验证登录但成功登录后重定向到主页失败(服务器响应 200)

密码注册后 Firebase 云功能出现未经身份验证的错误

React:使用 firebase-ui 设置 firebase 身份验证