gpt4 book ai didi

firebase - 使用React Native/Redux和Firebase进行持久身份验证

转载 作者:行者123 更新时间:2023-12-04 08:51:10 25 4
gpt4 key购买 nike

我有一个相当简单的React native/Redux应用程序,最近添加了Redux与AsyncStorage结合使用,以帮助重新加载时保持状态。

但是,我在让Firebase重新验证用户时遇到问题。我想知道是否有人对Redux和Firebase感到陌生。更清楚地说,我希望用户登录一次,然后在每次打开应用程序时不再再次登录。

我的登录用户操作:

export const loginUser = ({ email, password }) => {
return (dispatch) => {

dispatch({ type: LOGIN_USER });

firebase.auth().signInWithEmailAndPassword(email, password)
.then(user => loginUserSuccess(dispatch, user))
.catch(() => {
firebase.auth().createUserWithEmailAndPassword(email, password)
.then(user => loginUserSuccess(dispatch, user))
.catch(() => loginUserFail(dispatch));
});
};
};

我的App.js:
    class App extends Component {

constructor() {
super();
this.state = {
rehydrated: false,
store
};
}

componentDidMount() {

const persistor = persistStore(
store,
{
storage: AsyncStorage,
whitelist: ['auth']
},
() => { this.setState({ rehydrated: true }); }
);

AppState.addEventListener('change', () => this.handleAppLoaded(AppState.currentState));

const firebase_config = {
apiKey: Config.FIREBASE_API_KEY,
authDomain: `${Config.FIREBASE_PROJECT_NAME}.firebaseapp.com`,
databaseURL: `https://${Config.FIREBASE_PROJECT_NAME}.firebaseio.com`,
storageBucket: `${Config.FIREBASE_PROJECT_NAME}.appspot.com`,
messagingSenderId: Config.FIREBASE_MESSAGE_ID
};

firebase.initializeApp(firebase_config);
}

componentWillUnmount() {
AppState.removeEventListener('change', () => this.handleAppLoaded(AppState.currentState));
}

handleAppLoaded(state) {
if (state === 'active') {
store.dispatch(renewToken(store.getState()));
}
return null;
}

render() {
if (!this.state.rehydrated)
return null;
this.handleAppLoaded(AppState.currentState);

return (
<Provider store={store}>
<RouterWithRedux />
</Provider>
);
}
}

export default App;

有人可以指出我正确的方向吗?我曾尝试执行reauthUser操作,但由于无法找到重新验证用户身份的方法而陷入困境,因为Auth对象不保存密码(显然出于安全原因)

最佳答案

您是否在使用Web SDK?如果是这样,那么首先您需要使用它而不是https://github.com/invertase/react-native-firebase

这些库用于带有本地支持的react-native项目。

如果您已经在使用它,则可以在此处检查API https://rnfirebase.io/docs/v3.2.x/auth/reference/auth

设置所有onUserChangedonAuthStateChanged等。然后您的应用程序应该不会重新验证内容。

关于firebase - 使用React Native/Redux和Firebase进行持久身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41318931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com