Как отобразить имя пользователя в учетной записи с Firebase - PullRequest
2 голосов
/ 22 мая 2019

Я все еще немного новичок в firebase и реагирую на нативную.Когда пользователь успешно входит в систему, я хочу получить и отобразить имя пользователя из firebase.

Вместо жесткого кодирования временного имени 'Hussnain_sarwar' в моем файле Account.js, я хочу отобразить имя пользователя,Я не знаю правильный синтаксис, чтобы сделать это, и я не уверен, требует ли это Redux, но если это так, мне определенно нужна помощь, ха-ха.

Если я вижу, как это делается, я могу понять, как получить и отобразить другую информацию о пользователе, такую ​​как адрес, инвентарь и т. Д.

SignIn.js

firebase
      .auth()
      .signInAndRetrieveDataWithCredential(credential)
      .then((result) => {
        console.log('User is signed in');
        if(result.additionalUserInfo.isNewUser){


        firebase
        .database()
        .ref(`/users/${result.user.uid}`)
        .set({
          gmail: result.user.email,
          profile_picture: result.additionalUserInfo.profile.picture,
          locale: result.additionalUserInfo.profile.locale, //what location you're in
          first_name: result.additionalUserInfo.profile.given_name,
          last_name: result.additionalUserInfo.profile.family_name,
          created_at: Date.now()
        })
        .then(function(snapshot) {

        });
      } else {
        firebase
        .database()
        .ref(`/users/${result.user.uid}`)
        .update({
          last_logged_in: Date.now()
        });
      }
      })
      .catch((error) => {
        // Handle Errors here.
        const errorCode = error.code;
        const errorMessage = error.message;
        // The email of the user's account used.
        const email = error.email;
        // The firebase.auth.AuthCredential type that was used.
        const credential = error.credential;
        // ...
      });
    } else {
      console.log('User already signed-in Firebase.');
      }
    },
  );
};

Account.js

render() {
    const {
      navigation: { navigate }
    } = this.props;
    return (
      <View style={[commonStyles.flex1, { backgroundColor: '#000000' }]}>
      <Header>
          <Text
            style={[
              styles.TextColor,
              commonStyles.font18,
              commonStyles.textBold
            ]}
          >
            My Account
          </Text>
        </Header>
        <View style={[commonStyles.alignSelfcenter, commonStyles.mt20]} />
        <View style={[commonStyles.alignSelfcenter, commonStyles.mt20]}>
          <Text
            style={[
              commonStyles.textWhite,
              commonStyles.font16,
              commonStyles.textBold
            ]}
          >
            Hussnain_sarwar
          </Text>
        </View>

1 Ответ

1 голос
/ 22 мая 2019

Вы можете либо передавать данные пользователя с одного экрана на другой, в вашем случае это от экран входа до экран учетных записей или использовать Redux для хранения пользовательских данных и доступа к ним через реквизиты.

Параметры маршрута отправки:

 this.props.navigation.navigate('RouteName', { /* params go here e.g. user: { name: "test" } */ })

Параметры маршрута доступа:

this.props.navigation.getParam(paramName, defaultValue)

Проверьте это Реагируйте параметры маршрута навигации

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