AWS Amplify Auth React Native — значение атрибута для номера телефона не должно быть нулевым

#amazon-web-services #react-native #amazon-cognito #aws-amplify

#amazon-web-services #реагировать-родной #amazon-cognito #aws-amplify #react-native

Вопрос:

Я выполнил следующие шаги, чтобы заставить Amplify Auth Login работать с React Native:

  1. созданный проект с помощью Expo, отправлен в ExpoKit
  2. yarn добавить aws-amplify, yarn добавить aws-amplify-react-native
  3. ссылка на react-native
  4. усиливает инициализацию
  5. усилить настройку
  6. усиливает добавление аутентификации
  7. усиливает нажатие

Приложение React Native, которое я запускаю, состоит из основного App.js компонент со следующим импортом:

 import React, { Component } from "react";
import { StyleSheet, View, Text } from "react-native";
import Amplify, { Auth } from "aws-amplify";
import AWSConfig from "./aws-exports";
Amplify.configure(AWSConfig);
import Tabs from "./Tabs";
  

Мой основной App.js в файле также есть две вкладки (одна для компонента входа, а другая для компонента регистрации).

Мой компонент регистрации выглядит следующим образом:

 ...
  signUp = () => {
    Auth.signUp({
      username: this.state.username,
      password: this.state.password,
      attributes: {
        email: this.state.email
      }
    })
      .then(() => console.warn("successful sign up!"))
      .catch(err => console.warn("error signing up!: ", err));
  };

  confirmSignUp = () => {
    Auth.confirmSignUp(this.state.username, this.state.confirmationCode)
      .then(() => console.warn("successful confirm sign up!"))
      .catch(err => console.warn("error confirming signing up!: ", err));
  };

  render() {
    return (
      <View style={styles.container}>
        ...
        <Button title="Confirm Sign Up" onPress={this.confirmSignUp} />
      </View>
    );
  }
...
  

Моя проблема в том, что когда я пытаюсь зарегистрировать пользователя, я получаю:

значение атрибута для номера телефона не должно быть нулевым

Когда я проверяю атрибуты пула пользователей, который был автоматически создан в: AWS cognito console, то

Адрес электронной почты

является единственным «стандартным атрибутом, который является обязательным».

Пожалуйста, посоветуйте.

Комментарии:

1. ошибка, похоже, устранена путем отправки: attributes: { email: this.state.email, phone_number: '' }

2. Ну, тогда это действительно не было решено. Он принимает номер телефона как пустую строку, которая является пустой, а не нулевой, что приводит к ошибке.

Ответ №1:

Вы можете сделать что-то вроде этого: в вашем классе компонента инициализируйте состояние, чтобы запомнить входные данные ’email_address’ и ‘phone_number’, и убедитесь, что для функции «onChange» текстового ввода установлено значение «this.setState({phone_number: value})»

 `class myClass extends React.component{
    constructor(props){
        super(props)
        this.state={(email_address = undefined;
                     phone_number= undefined;)}
  }
    ... //Same code here

   signUp = () => {
    Auth.signUp({
      username: this.state.username,
      password: this.state.password,
      attributes: {
        email: this.state.email
        phone_number: this.state.phone_number
      }
    })
      .then(() => console.warn("successful sign up!"))
      .catch(err => console.warn("error signing up!: ", err));
  };

    ....//Some code
}`