【问题标题】:AWS Cognito auth fails with Vanilla JSAWS Cognito 身份验证因 Vanilla JS 失败
【发布时间】:2020-12-31 09:08:37
【问题描述】:

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

在他们的文档中他们有this example。问题是,当我关注它时,我会收到以下错误

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 生成的数据

【问题讨论】:

    标签: javascript amazon-web-services amazon-cognito


    【解决方案1】:

    我终于成功了

    这是验证用户的正确配置

    首先你需要加载这些库

    <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);
              },
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-29
      • 2015-03-26
      • 2016-06-25
      • 1970-01-01
      • 2017-01-03
      • 2018-09-03
      • 2017-01-02
      • 2018-05-22
      相关资源
      最近更新 更多