AWS Amplify Auth + React Native-电话号码的属性值不能为null

时间:2019-03-20 02:39:51

标签: amazon-web-services react-native amazon-cognito aws-amplify

我已按照以下步骤操作,以使React原生上的Amplify Auth登录流程有效:

  1. 使用Expo创建的项目,弹出到ExpoKit
  2. 纱线添加aws-amplify,纱线添加aws-amplify-react-native
  3. 本机链接
  4. 放大init
  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文件还具有两个选项卡(一个用于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然后

  

电子邮件

是唯一的“必需的标准属性”。

请告知。

1 个答案:

答案 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
}`