Изменение Cognito-User-Pool / AWS-Amplify; ведущий к проблеме SignUp - PullRequest
0 голосов
/ 16 июня 2019

Я обрабатываю некоторый процесс SignUp / SignIn в приложении для iOS, используя AWS-Amplify (и Cognito).

Это работало нормально, но затем я решил потребовать немного больше информации при регистрации,А именно: имя, имя, имя, фамилия.

Вот функция, вызываемая для аутентификации:

func showSignIn() {
    AWSAuthUIViewController
        .presentViewController(with: self.navigationController!,
                               configuration: nil,
                               completionHandler: {
                                (provider: AWSSignInProvider, error: Error?) in
                                if error != nil {
                                    print("Error occurred: \(String(describing: error))")
                                } else {
                                    print("Identity provider: \(provider.identityProviderName)")
                                }
        })
}

После того, как я сделал необходимые манипуляции (используя ampify-cli) для удаления старого пула пользователей исделать новый.Я перекомпилировал свое приложение для iOS и запустил его.

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

enter image description here

Содержание сообщения неудивительно, так как теперь мне требуются указанные поля.Но проблема в том, что я не вижу места в пользовательском интерфейсе для ввода этих новых полей.

Я забыл что-то сделать, чтобы пользовательский интерфейс мог адекватно обновляться?Или я должен что-то сделать (обновить пользовательский интерфейс вручную), изменив функцию выше?Если ДА, какой способ внести изменения?

Это мои первые шаги с усилением, возможно, я допускаю некоторые основные ошибки.

1 Ответ

1 голос
/ 16 июня 2019

Я использую только AWS Amplify с JavaScript, но в JS вам необходимо обновить пользовательский интерфейс вручную.

Вот код JS и как я должен вызвать его вручную, может быть, это поможет.

handleSignUpPressed = async ({
  emailAddress = '',
  firstName = '',
  lastName = '',
  password = '',
  phoneNumber = '',
  wantsToImproveApp = true,
} = {}) => {
  if (emailAddress && firstName && lastName && password && phoneNumber) {
    try {
      const res = await Auth.signUp({
        username: emailAddress,
        password,
        attributes: {
          email: emailAddress,
          name: firstName,
          family_name: lastName,
          phone_number: phoneNumber,
        },
      });
      console.log('success', res);
      this.props.navigation.push('VerificationScreen', {
        username: res.username,
      });
    } catch (err) {
      console.log(err);
    }
  }
};
...