为了账号安全,请及时绑定邮箱和手机立即绑定

Firebase signInWithEmailAndPassword直到UI焦点更改后才触发

Firebase signInWithEmailAndPassword直到UI焦点更改后才触发

拉风的咖菲猫 2021-04-29 13:33:41
我正在将Firebase.signInWithEmailAndPassword(email, password).then()用于本机Android项目中的身份验证。我在onPress按钮事件上调用了该函数。会进行身份验证,但是由于某些原因,.then()除非我在屏幕上的其他位置点击,否则不会触发身份验证。它会很高兴地等待5分钟,直到我点击除按钮以外的其他位置来触发。我可以看到验证正在进行中。这只是.then()挂起的承诺,直到焦点从按钮移开。我正在使用本机0.59.5和firebase 5.1.0节点库。我已经尝试过console.logging每个步骤,很明显这then()是失败的地方。奇怪的catch()是立即工作。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))      })  }}const loginUserFail = dispatch => {  dispatch({ type: LOGIN_USER_FAIL })}const loginUserSuccess = (dispatch, user) => {  console.log('Firing success')  dispatch({    type: LOGIN_USER_SUCCESS,    payload: user  })}在上面的示例中,如果auth失败,loginUserFail将立即运行,但是loginUserSuccess将无限期等待,直到我点击应用程序中的其他位置。
查看完整描述

3 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

您是否在Chrome浏览器中打开了远程调试器?关闭它(调试器),在模拟器中重新加载应用程序,它将按预期工作。


查看完整回答
反对 回复 2021-05-13
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

只需在您的应用程序中停止Remote Debugger,希望这会有所帮助


查看完整回答
反对 回复 2021-05-13
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

尝试删除“然后”的承诺:


firebase.auth().signInWithEmailAndPassword(email, password)

            .catch(error => {

                dispatch(loginUserFail(error));

            });

之后,尝试使用此命令创建一个动作:


firebase.auth().onAuthStateChanged(user => {

            if (user) {

                console.log('success sign in');

                dispatch(loginUserSuccess(user));

            } else {

                // No user is signed in.

            }

        });


查看完整回答
反对 回复 2021-05-13
  • 3 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信