angular - Angular / AWS Cognito 用户注册错误 - “未知错误,来自 fetch 的响应正文是:未定义”
问题描述
在尝试在我的 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}'`);
}
})
}
}
解决方案
推荐阅读
- postgresql - 无法打开驱动程序的连接:org.eclipse.birt.report.data.oda.jdbc。使用数据库 postgres
- javascript - Bootstrap-datepicker onClose 事件问题
- sql - 递归查询以获取整个层次结构 [ORACLE]
- php - 卷曲忽略 CURLOPT_FILE
- r - R 中按组划分的树状图的颜色分支(没有 h 或 k 元素)
- c# - 如何处理应用程序中长时间运行的请求并允许用户在不冻结 UI 的情况下访问应用程序
- javascript - 通过Javascript访问s3对象时区分文件不存在和访问被拒绝
- for-loop - 如何使用动态创建的选项卡和 for 循环显示 ggplotly 图?
- python-3.x - python - 如何将一个窗口中计算的值访问到python tkinter中的另一个窗口?
- javascript - JavaScript Async/Await:尝试修改工作代码失败