Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
Firebase反应本机加载问题_Firebase_React Native_Loading - Fatal编程技术网

Firebase反应本机加载问题

Firebase反应本机加载问题,firebase,react-native,loading,Firebase,React Native,Loading,我是react native的新手,我尝试构建一个移动应用程序。我正在使用Firebase应用程序。当我尝试登录时,它会在加载页面上死机。得到这个警告: 在Android上,设置一个长时间的计时器(即多分钟)是一个性能和正确性问题,因为它会使计时器模块处于唤醒状态,并且计时器只能在应用程序位于前台时调用。有关更多信息,请参阅。 (Saw设置超时,持续时间3600000ms) 我该怎么办 认证代码也在这里: import { AsyncStorage } from 'react-native';

我是react native的新手,我尝试构建一个移动应用程序。我正在使用Firebase应用程序。当我尝试登录时,它会在加载页面上死机。得到这个警告:

在Android上,设置一个长时间的计时器(即多分钟)是一个性能和正确性问题,因为它会使计时器模块处于唤醒状态,并且计时器只能在应用程序位于前台时调用。有关更多信息,请参阅。 (Saw设置超时,持续时间3600000ms)

我该怎么办

认证代码也在这里:

import { AsyncStorage } from 'react-native';

export const SIGNUP = 'SIGNUP';
export const LOGIN = 'LOGIN';
export const AUTHENTICATE = 'AUTHENTICATE';
export const LOGOUT = 'LOGOUT';

let timer;

export const authenticate = (userId, token, expiryTime) => {
  return dispatch => {
    dispatch(setLogoutTimer(expiryTime));
    dispatch({ type: AUTHENTICATE, userId: userId, token: token });
  };
};

export const signup = (email, password) => {
  return async dispatch => {
    const response = await fetch(
      'https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=...',
      {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({
          email: email,
          password: password,
          returnSecureToken: true
        })
      }
    );

    if (!response.ok) {
      const errorResData = await response.json();
      const errorId = errorResData.error.message;
      let message = 'Bir terslik var!';
      if (errorId === 'EMAIL_EXISTS') {
        message = 'Bu e-posta zaten kayıtlı!';
      }
      throw new Error(message);
    }

    const resData = await response.json();
    console.log(resData);
    dispatch(
      authenticate(
        resData.localId,
        resData.idToken,
        parseInt(resData.expiresIn) * 1000
      )
    );
    const expirationDate = new Date(
      new Date().getTime() + parseInt(resData.expiresIn) * 1000
    );
    saveDataToStorage(resData.idToken, resData.localId, expirationDate);
  };
};

export const login = (email, password) => {
  return async dispatch => {
    const response = await fetch(
      'https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=...',
      {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({
          email: email,
          password: password,
          returnSecureToken: true
        })
      }
    );

    if (!response.ok) {
      const errorResData = await response.json();
      const errorId = errorResData.error.message;
      let message = 'Bir terslik var!';
      if (errorId === 'EMAIL_NOT_FOUND') {
        message = 'Böyle bir e-posta yok!';
      } else if (errorId === 'INVALID_PASSWORD') {
        message = 'Bu şifre geçersiz!';
      }
      throw new Error(message);
    }

    const resData = await response.json();
    console.log(resData);
    dispatch(
      authenticate(
        resData.localId,
        resData.idToken,
        parseInt(resData.expiresIn) * 1000
      )
    );
    const expirationDate = new Date(
      new Date().getTime() + parseInt(resData.expiresIn) * 1000
    );
    saveDataToStorage(resData.idToken, resData.localId, expirationDate);
  };
};

export const logout = () => {
  clearLogoutTimer();
  AsyncStorage.removeItem('userData');
  return { type: LOGOUT };
};

const clearLogoutTimer = () => {
  if (timer) {
    clearTimeout(timer);
  }
};

const setLogoutTimer = expirationTime => {
  return dispatch => {
    timer = setTimeout(() => {
      dispatch(logout());
    }, expirationTime);
  };
};

const saveDataToStorage = (token, userId, expirationDate) => {
  AsyncStorage.setItem(
    'userData',
    JSON.stringify({
      token: token,
      userId: userId,
      expiryDate: expirationDate.toISOString()
    })
  );
};

您不应该忽略它,但此消息是一个警告,可能不是应用程序卡在加载屏幕上的原因。请给我们您的代码(和/或在世博会上进行最低限度的复制会更好),以便我们可以检查它。感谢您的兴趣!我编辑了我的问题,您可以检查。您不应该忽略它,但此消息是一个警告,可能不是您的应用程序在加载屏幕上卡住的原因。请给我们您的代码(和/或在世博会上进行最低限度的复制会更好),以便我们可以检查它。感谢您的兴趣!我编辑了我的问题,你可以检查一下。