【问题标题】:Getting Amazon Cognito to work with angular2 and typescript让 Amazon Cognito 使用 angular2 和 typescript
【发布时间】:2018-02-13 00:30:41
【问题描述】:

我正在尝试让 Cognito 的忘记密码工作

我正在使用: Angular2+Typescript+Ionic

我对这个过程还很陌生,但我遵循了从这里找到的快速入门https://www.libhive.com/providers/npm/packages/amazon-cognito-identity-js

无论我做什么,我总是无法读取未定义的属性“CognitoUser”,或类似的错误

import { Component } from '@angular/core';
import { NavController, LoadingController } from 'ionic-angular';
import { TabsPage } from '../tabs/tabs';
import { SignupPage } from '../signup/signup';
import { ConfirmPage } from '../confirm/confirm';
import { LoginPage } from '../login/login';
import {Camera, CameraOptions} from '@ionic-native/camera';
import { Cognito } from '../../providers/aws.cognito';
import { User } from '../../providers/providers';
import { MediaCapture, MediaFile, CaptureError, CaptureImageOptions } from '@ionic-native/Media-Capture';
import {
    AuthenticationDetails,
    CognitoIdentityServiceProvider,
    CognitoUser,
    CognitoUserAttribute,
    CognitoUserPool
} from "aws-cognito-identity";
declare var AWS: any;
declare const aws_cognito_identity_pool_id;
declare const aws_cognito_region;

var AmazonCognitoIdentity = require('amazon-cognito-identity-js');
var CognitoUserPool = AmazonCognitoIdentity.CognitoUserPool;
var CognitoUser = AmazonCognitoIdentity.CognitoUser;


recovery()
  {
    AWS.config.region = aws_cognito_region;
    var CognitoUserPool = AmazonCognitoIdentity.CognitoUserPool;
    var userData = {
        Username : ‘testuser’,
        Pool : aws_cognito_identity_pool_id
    };
    
    var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
    

        // call forgotPassword on cognitoUser
        cognitoUser.forgotPassword({
            onSuccess: function(result) {
                console.log('call result: ' + result);
            },
            onFailure: function(err) {
                alert(err);
            },
            inputVerificationCode() { // this is optional, and likely won't be implemented as in AWS's example (i.e, prompt to get info)
                var verificationCode = prompt('Please input verification code ', '');
                var newPassword = prompt('Enter new password ', '');
                cognitoUser.confirmPassword(verificationCode, newPassword, this);
            }
        });
    
    alert("It should have worked");
  }

【问题讨论】:

    标签: angular amazon-web-services typescript ionic-framework amazon-cognito


    【解决方案1】:

    我通过导入我需要的所有内容,按以下方式对其进行了整理

        import {
        CognitoIdentityServiceProvider,
        AuthenticationDetails,
        CognitoUserPool,
        CognitoUser,
        CognitoUserAttribute,
        ICognitoUserAttributeData,
        ISignUpResult,
        CognitoUserSession,
      } from 'amazon-cognito-identity-js';
    
      import * as AWS from 'aws-sdk';
    

    然后在我的函数中使用它

              const userPool = this._getUserPoolData();
    
              const user = new CognitoUser({ Username: usrLoginDetails.username, Pool: userPool });
              const authenticationData = { Username: usrLoginDetails.username, Password: usrLoginDetails.password };
              const authenticationDetails = new AuthenticationDetails(authenticationData);
    
    
    
                user.authenticateUser(authenticationDetails, {
                  onSuccess: result => {
                   //success here 
                  },
                  onFailure: error => {}, //error here,
                  newPasswordRequired: () => {},  // no-op
                  mfaRequired: () => {},  // no-op
                  customChallenge: () => {} // no-op
                });
    

    我对其进行了测试,并让它运行起来没有任何问题。让我知道这是否适合您!

    【讨论】:

    猜你喜欢
    • 2020-07-10
    • 1970-01-01
    • 2016-10-15
    • 2017-07-07
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    相关资源
    最近更新 更多