Ошибка регистрации пользователя Angular / AWS Cognito - «Неизвестная ошибка, тело ответа при получении: undefined» - PullRequest
0 голосов
/ 15 ноября 2018

После получения этого ответа при попытке зарегистрировать новых пользователей в моем приложении Angular 7 я уже видел эту ошибку, о которой сообщалось ранее для аутентификации Cognito, обычно также касающейся регистрации и подтверждения пользователя.

Однако мне еще предстоит увидеть какие-либо предложения, которые могут работать в приложении Angular, и любые ранее предложенные решения потерпели неудачу, включая добавление модуля 'node-fetch'.

Я получаю сообщение об ошибке при попытке использования обоих методов userPool.signUp() и cognitoUser.confirmRegistration(), хотя каждый из них успешно работает при регистрации / подтверждении пользователя.

register.component.ts:

import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import fetch from 'node-fetch';
import * as AmazonCognitoIdentity from 'amazon-cognito-identity-js';
import { AuthService } from '@app/services/auth/auth.service';

@Component({
  selector: 'app-register',
  templateUrl: './register.component.html',
  styleUrls: ['./register.component.scss']
})

export class RegisterComponent implements OnInit {

  fetch;
  attributes: AmazonCognitoIdentity.CognitoUserAttribute[];

  email: string;
  password: string;
  confirmationCode: string;

  constructor(private auth: AuthService, public router: Router) {
    this.attributes = [];
    this.fetch = fetch;
  }

  ngOnInit() {

  }

  register() {
    this.attributes.push(new AmazonCognitoIdentity.CognitoUserAttribute({
        Name: 'email',
        Value: this.email
    }))

    this.auth.userPool.signUp(this.email, this.password, this.attributes, null, function(err, res) {
        if (err) {
            alert(err.message || JSON.stringify(err));
            return;
        } else {
            console.log('Username is' + res.getUsername());
        }
    })
  }

  confirmRegistration() {
    const userData = {
        Username: this.email,
        Pool: this.auth.userPool
    }

    let cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);

    cognitoUser.confirmRegistration(this.confirmationCode, true, function(err, res) {
        if (err) {
            alert(`Error confirming registration: ${err.message}`);
            console.error('Error confirming registration:', err);
        } else {
            console.log('User registration confirmed', res);
            this.auth.user = cognitoUser;
        }
    })
  }

  resendConfirmationCode() {
    const userData = {
        Username: this.email,
        Pool: this.auth.userPool
    }

    let cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);

    cognitoUser.resendConfirmationCode(function(err, res) {
        if (err) {
            alert(err.message || JSON.stringify(err));
            console.log('Error sending confirmation code:', err);
        } else {
            console.log(`Re-sent confirmation code to email address '${this.email}'`);
        }
    })
  }

}
...