正如@oieduardorabelo 所提到的,您可以简单地安装“amazon-cognito-identity-js”,您还可以在 npm 上找到做得好的示例。
这是我的测试代码,可以轻松理解这个库。您必须已经在 AWS 上构建了基础设施(userPool、userClient 并添加了一个新用户来测试登录 - 在我的情况下,用户必须在首次登录时更改密码,所以我在我的脚本中添加了这个用例):
import * as AmazonCognitoIdentity from 'amazon-cognito-identity-js';
var authenticationData = {
Username: 'email',
Password: 'password',
};
var authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData);
var poolData = {
UserPoolId: 'us-east-1_userpoolid',
ClientId: '26pjexamplejpkvt'
};
var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
var cognitoUser = userPool.getCurrentUser();
console.log(cognitoUser);
if (!cognitoUser) {
var userData = {
Username: authenticationData.Username,
Pool: userPool
};
var cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (result) {
var accessToken = result.getAccessToken().getJwtToken();
var idToken = result.idToken.jwtToken;
console.log('Success', accessToken, idToken);
},
newPasswordRequired: function (userAttributes, requiredAttributes) {
delete userAttributes.email_verified;
cognitoUser.completeNewPasswordChallenge('DemoPassword1!', userAttributes, {
onSuccess: (data) => {
console.log(data);
},
onFailure: function (err) {
alert(err);
}
});
},
onFailure: function (err) {
alert(err);
},
});
}
如果有人有兴趣从头开始设置此测试项目,请运行:
npm init -y
npm i -D webpack webpack-cli
npm i amazon-cognito-identity-js
在 webpack.config.js 中:
var path = require('path');
module.exports = {
entry: './src/app.js',
mode: 'development',
output: {
path: path.resolve(__dirname, "dist"),
filename: 'main.js',
}
}
在 ./src/app.js 中创建一个新文件,在其中使用正确的 AWS 信息参考添加先前的 amazonCognitoIdentity 代码并创建 ./dist/index.html :
...
<body>
<script src="main.js"></script>
</body>
在 package.json 添加脚本“watch”:
...
"scripts": {
"watch": "webpack --watch",
}
最后运行它:
npm run watch
并使用开发控制台直接在浏览器上打开 index.html。
希望对某人有用。