我已按照以下步骤操作,以使React原生上的Amplify Auth登录流程有效:
我正在运行的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文件还具有两个选项卡(一个用于SignIn组件,另一个用于SignUp组件)。
我的SignUp组件如下所示:
...
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然后
电子邮件
是唯一的“必需的标准属性”。
请告知。
答案 0 :(得分:0)
您可以执行以下操作: 在组件类的初始化状态下,请记住“电子邮件地址”和“电话号码”输入,并确保将textInput的“ 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
}`