本地存储缺少ID令牌,请进行身份验证

问题描述

获取本地存储缺少ID令牌,请进行身份验证。我的最终目标是让用户通过AWS Cognito进行注册,然后在DynamoDB表中添加一行。我能够在用户池中获取用户,但无法将详细信息添加到DynamoDB。无法找出错误,将不胜感激。

<!DOCTYPE html>

<html lang="en">
  <head>
    <meta charset="utf-8">
    <!-- Javascript SDK-->
 <script src="https://sdk.amazonaws.com/js/aws-sdk-2.410.0.min.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>
 
  </head>

    
  <body>
<fieldset >
    <h1 class="h3 mb-3 font-weight-normal" id="titleheader">Register an Account</h1>
    <form>
    <input type="email" class="form-control" id="emailInputRegister" placeholder="Email" pattern=".*" required><br><br>
    <input type="password" class="form-control" id="passwordInputRegister" placeholder="Password" pattern=".*" required><br><br>
    <input type="personalname" class="form-control" id="personalnameRegister" placeholder="First Name" pattern=".*" required><br><br>
    <input type="personalname2" class="form-control" id="personalnameRegister2" placeholder="Last Name" pattern=".*" required><br><br>
    <input type="text" class="form-control" id="organizationRegister" placeholder="Organization" pattern=".*" required><br><br>
    <input type="text" class="form-control" id="jobTitleRegister" placeholder="JobTitle" pattern=".*" required><br><br>
    <input type="tel" class="form-control" id="phone" placeholder="Cell Phone Number" pattern=".*" required><br><br>
    <button id="mainbutton" class="btn btn-lg btn-primary btn-block" type="button" onclick="registerButton()" >Sign Up</button>
    </form>
</fieldset >    
    <script>

        var username;
        var password;
        var firstname;
        var lastname;
        var jobtitle;
        var organization;
        var phonenumber;
        var poolData;
            
      function registerButton() {
            
        username = document.getElementById("emailInputRegister").value;
        password = document.getElementById("passwordInputRegister").value;  
        firstname = document.getElementById("personalnameRegister").value;
        lastname = document.getElementById("personalnameRegister2").value;
        organization = document.getElementById("organizationRegister").value;
        jobtitle = document.getElementById("jobTitleRegister").value;
        phonenumber = document.getElementById("phone").value;
      
        poolData = {
                
                UserPoolId :<userPoolId>,'
                ClientId : <client id>
            };
      
            var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
        
        var attributeList = [];
        
        var dataEmail = {
            Name : 'email',Value : username,//get from form field
        };
        
        var dataFirstName = {
            Name : 'name',Value : firstname,//get from form field
        };
        
        /*var dataLastName ={
        Name : 'family name',Value : lastname,};
        
        var dataPhoneNumber ={
        Name : 'family name',};*/
        
        var attributeEmail = new AmazonCognitoIdentity.CognitoUserAttribute(dataEmail);
        var attributePersonalName = new AmazonCognitoIdentity.CognitoUserAttribute(dataFirstName); 
        
        
        attributeList.push(attributeEmail);
        attributeList.push(attributePersonalName);
        
        var temp;
            userPool.signUp(username,password,attributeList,null,function(err,result){
            if (err) {
                alert(err.message || JSON.stringify(err));
                return;
            }
            cognitoUser = result.user;
            console.log('user name is ' + cognitoUser.getUsername());
            //var cognitoUser = userPool.getCurrentUser();
            //console.log('cognitoUser =',cognitoUser);
            //change elements of page
            //document.getElementById("titleheader").innerHTML = "Check your email for a verification link";
            
        //});
        //var userPool1 = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(data);
        //console.log('userPool',userPool1);
        
        //var cognitoUser = userPool1.getCurrentUser();
        //console.log("temp is ",cognitoUser);
          if (cognitoUser != null) {
            cognitoUser.getSession(function(err,session) {
              if (err) {
                console.log(err);
                return;
              }

              console.log('session validity: ' + session.isValid());
              console.log('session token: ' + session.getIdToken().getJwtToken());

              AWS.config.region = 'us-east-1';
              AWS.config.credentials = new AWS.CognitoIdentityCredentials({
                IdentityPoolId : <Identity_Pool>,Logins : {
                  // Change the key below according to the specific region your user pool is in.
                  'cognito-idp.us-east-1.amazonaws.com/${Identity_Pool}' : session.getIdToken().getJwtToken()
                }
              });

              AWS.config.credentials.get(function(err) {
                if (!err) {
                  var id = AWS.config.credentials.identityId;
                  console.log('Cognito Identity ID '+ id);

                  // Instantiate aws sdk service objects now that the credentials have been updated
                  var docClient = new AWS.DynamoDB.DocumentClient({ region: AWS.config.region });
                  var params = {
                    TableName: 'TestTable',Item:{emailId:username,}
                  };
                  docClient.put(params,data) {
                    if (err) 
                      console.error(err);
                    else 
                      console.log(data);
                  });
                }
              });
            });
          } else {
            console.log(err);
            return;
          }
        });
        
    }


      
    </script>       
 </body>
  
</html>

解决方法

您可以通过docClient.put()将API用于Dynamodb操作

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...