首页 > 解决方案 > AWS Cognito 身份验证因 Vanilla JS 失败

问题描述

我正在尝试使用 AWS Cognito 对用户进行身份验证,并使用 Vanilla JS 从 AWS 获取令牌。

在他们的文档中,他们有这个例子。问题是,当我遵循它时,我得到以下错误

ErrorValidationException: 3 validation errors detected: Value 'value' at 'accountId' failed to satisfy constraint: Member must have length less than or equal to 15; Value 'value' at 'accountId' failed to satisfy constraint: Member must satisfy regular expression pattern: \d+; Value 'value' at 'identityPoolId' failed to satisfy constraint: Member must satisfy regular expression pattern: [\w-]+:[0-9a-f-]+

对于这些变量

var IDENTITY_POOL_ID = "value";
var ACCOUNT_ID = "value";
var REGION = "value";

我使用了 AWS 为我生成的数据(我不想在此处显示它们)。

我只是对为什么这不起作用感到困惑,因为这是他们文档中的一个非常简单的示例,并且它使用的是由 AWS 生成的数据

标签: javascriptamazon-web-servicesamazon-cognito

解决方案


我终于成功了

这是验证用户的正确配置

首先你需要加载这些库

<script src="https://sdk.amazonaws.com/js/aws-sdk-2.3.5.js"></script>
<script src="https://rawgit.com/aws/amazon-cognito-identity-js/master/dist/aws-cognito-sdk.min.js"></script>
<script src="https://rawgit.com/aws/amazon-cognito-identity-js/master/dist/amazon-cognito-identity.min.js"></script>

然后只需将此配置与您的数据一起添加

var authenticationData = {
          Username: username,
          Password: password,
        };
        var authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(
          authenticationData
        );
        var poolData = {
          UserPoolId: "user_pool_id",
          ClientId: "client_id",
        };
        var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
        var userData = {
          Username: username,
          Pool: userPool,
        };
        var cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
        cognitoUser.authenticateUser(authenticationDetails, {
          onSuccess: function (result) {
            var accessToken = result.getAccessToken().getJwtToken();

            /* Use the idToken for Logins Map when Federating User Pools with identity pools or when passing through an Authorization Header to an API Gateway Authorizer */
            var idToken = result.idToken.jwtToken;
          },

          onFailure: function (err) {
            alert(err);
          },
        });

推荐阅读