Auth.currentUser Info () не показывает атрибуты пользователя реагируют на приложение Native Aws - PullRequest
0 голосов
/ 06 июня 2018

Я использую Auth.currentUser Info () для отображения данных профиля пользователя.Aws ampify отлично работает для регистрации, входа в систему.

Показывает имя пользователя только без других атрибутов. Также не выдает никаких ошибок.

Я пропустил здесь какие-либо коды или атрибуты.

Вот мой пример кода

     export default class Tab4Main extends Component {

     state = {
     info: {}
      }

     async componentDidMount() {
     const info = await Auth.currentUserInfo()
     console.log('Returned info: ', info)
     this.setState({ info })
      }



     signOut() {

      Auth.signOut()
     .then(user => {

       console.log('successful sign out!')

               })
       .catch(err => Alert.alert('error signing out: ', err))
          }


          render() {
        const { info } = this.state
        const {username, gender,birthdate } = info



              return (


            <Container>
                <Content>

               <Text style={{paddingTop:50,color:"red"}}>Welcome, 
               {username}
               {gender},
                 {birthdate}
                    </Text>


                <Button rounded block style={{ 
            backgroundColor:"#6e1e11",marginTop:40}} onPress= 
               {this.signOut.bind(this)} >
               <Text style={{fontSize: 18,fontWeight: "bold",color: 
              "#ffffff"}}>Sign Out</Text>
                  </Button>

Я также добавляю код регистрации. Это работает просто отлично и сохраняет данные в пулы пользователей. И логин тоже работает нормально после подтверждения.

      state = {
  username:'',
  name: '',
  password: '',
  gender:'',
  birthdate:'',
  confirmationCode: '',

 }
onChangeText(key, value) {
  this.setState({
  [key]: value
  })
  }
   signUp() {
     Auth.signUp({
       username: this.state.username,
       password: this.state.password,
       attributes: {

       gender:this.state.gender,
      birthdate:this.state.birthdate,
      name:this.state.name
     }
    })
    .then(() => this.ShowModalFunction(true) )

     //console.log('successful sign up!'))

     .catch(err => Alert.alert('error signing up!: ', err))
    }

1 Ответ

0 голосов
/ 06 июня 2018

Проверьте, есть ли у вашего профиля Cognito атрибуты.Сначала необходимо зарегистрироваться с атрибутами, чтобы получить объект атрибута в методе Auth.currentUserInfo().

Пример кода регистрации

Auth.signUp({
  username: 'value'
  password: 'value',
  attributes: {
    attr1: 'value1',
    attr2: 'value2',
  },
 }).then((response) => {
   ....
}

Затем вы проверяете, есть ли атрибутыпутем деструктуризации с использованием значения по умолчанию.

Пример кода сеанса

Auth.currentUserInfo().then((userInfo) => {
  const { attributes = {} } = userInfo;
  console.log(attributes['attr1']);
})

Опубликуйте свой код регистрации, и мы увидим, если вы не можете решить свою проблему с помощью этого решения.

...