База данных Firebase не работает с аутентификацией Facebook Expo - PullRequest
0 голосов
/ 24 июня 2018

Я разрабатывал приложение с React Native (с Expo) и Firebase на бэкэнде.Когда я запускаю проект через клиент Expo на iPhone, я обычно могу войти по электронной почте и паролю, а затем получить данные из базы данных Firebase.Но когда я захожу через Facebook, база данных читается руками, и это ничего не решает.Важные части кода выглядят следующим образом:

firebase.initializeApp(firebaseConfig);

// This works everywhere
export const login = async (email, password) => {
    await firebase.auth().signInWithEmailAndPassword(email, password);

    const userId = firebase.auth().currentUser.uid;

    return userId + '';
};

export const loginByFacebook = async () => {
  const { type, token } = await Expo.Facebook.logInWithReadPermissionsAsync(FB_APP_ID, {
    permissions: ['public_profile'],
  });

  if (type === 'success') {
    const credential = firebase.auth.FacebookAuthProvider.credential(token);

    try {
      await firebase.auth().signInAndRetrieveDataWithCredential(credential);
    } catch (error) {
      console.log('cannot login ', error);
    }
  }
};

export const readData = (key) => {
  console.log('getWins ');
  const userId = firebase.auth().currentUser.uid;

  return firebase
    .database()
    .ref(`/${key}/${userId}`)
    .once('value');
};

...

class PostList extends React.Component {
    async componentDidMount() {
        // it normally resolves when logged with email & password,
        // resolves with facebook auth on iPhone simulator
        // does not resolve with facebook auth on Expo client on iPhone
        const data = await readData('posts');
    }
}

Однако, что действительно странно, это то, что он не работает на клиенте iPhone + Expo, но работает на симуляторе iPhone.Важнейшая часть в async componentDidMount().

Конфигурация базы данных все еще находится в режиме разработки (разрешить все чтение и запись):

{
    "rules": {
        ".read": true,
        ".write": true
    }
}

Я использовал следующие руководства: https://docs.expo.io/versions/latest/sdk/facebook https://docs.expo.io/versions/latest/guides/using-firebase#listening-for-authentication

Есть ли еще какие-то предварительные условия, которые я забыл настроить?Или у клиента Expo есть ограничения с точки зрения правильной обработки вызовов с авторизацией в Facebook?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...