#amazon-web-services #react-native #amazon-cognito #aws-amplify
#amazon-web-services #реагировать-родной #amazon-cognito #aws-amplify #react-native
Вопрос:
Я выполнил следующие шаги, чтобы заставить Amplify Auth Login работать с React Native:
- созданный проект с помощью Expo, отправлен в ExpoKit
- yarn добавить aws-amplify, yarn добавить aws-amplify-react-native
- ссылка на react-native
- усиливает инициализацию
- усилить настройку
- усиливает добавление аутентификации
- усиливает нажатие
Приложение 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
}`