Angular/AWS Cognito 用户登录错误 - 类型 'refresh' 上不存在属性 'credentials'

标签 angular amazon-web-services aws-lambda amazon-cognito angular7

我正在尝试为我的 Angular 7 应用程序配置用户登录,并构建了大部分 cognitoUser.authenticateUser() 方法,但在 onSuccess() 方法中,我无法刷新 AWS 配置凭据,因为我在 AWS.config.credentials.refresh() 收到以下错误:

"Property 'refresh' does not exist on type 'Credentials | CredentialsOptions'. Property 'refresh' does not exist on type 'CredentialsOptions'."

auth.service.ts:

import { Injectable } from '@angular/core';
import { Router } from '@angular/router';

import * as AWS from 'AWS-sdk';
import { CognitoIdentityCredentials } from 'AWS-sdk';
import * as AmazonCognitoIdentity from 'amazon-cognito-identity-js';
import credentials from '../../../../server/credentials.json';

@Injectable({
  providedIn: 'root'
})

export class AuthService {

  user: AmazonCognitoIdentity.CognitoUser;

  userPool;
  userData;

  isAuthenticated: boolean;

  constructor(private router: Router) {
    const poolData = {
        UserPoolId: '*****',
        ClientId: credentials.appClientId
    }

    this.userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);

    if (this.user) {
        this.isAuthenticated = true;
    } else {
        this.isAuthenticated = false;
    }
  }

  signIn(email, password) {
    const authDetails = new AmazonCognitoIdentity.AuthenticationDetails({
        Username: email,
        Password: password
    })

    const userData = {
        Username: email,
        Pool: this.userPool
    }

    const cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);

    cognitoUser.authenticateUser(authDetails, {
        onSuccess: function(res) {
            const accessToken = res.getAccessToken().getJwtToken();

            AWS.config.credentials = new AWS.CognitoIdentityCredentials({
                IdentityPoolId: this.userPool.UserPoolId,
                Logins: {
                    'cognito-idp.*****.amazonaws.com/*****': res.getIdToken().getJwtToken()
                }
            })

            AWS.config.credentials.refresh(err => {
                // ISSUE HERE
            })
        },
        onFailure: function(err) {

        }
    }
  }

}

最佳答案

AWS.config.credentials.refresh(err => {
  // ISSUE HERE
})

用这个替换上面的代码

( < AWS.CognitoIdentityCredentials > AWS.config.credentials).refresh((error) => {

});

这叫做变量转换

关于Angular/AWS Cognito 用户登录错误 - 类型 'refresh' 上不存在属性 'credentials',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53319051/

相关文章:

javascript - 如何专注于一个领域?

amazon-web-services - 如何在 ECR 中重新标记图像?

amazon-web-services - AWS SQS 为什么请求数如此之高

javascript - 在 forEach 中创建子级

javascript - Angular 删除所有已完成的内容在没有刷新的情况下无法工作

Angular 4组件双向绑定(bind)问题

amazon-web-services - 使用 Amazon Beanstalk 部署 play2 应用程序的最佳方式

ios - 同一 View Controller 中的 AWS AppSync 多个订阅不起作用 - iOS Swift

amazon-web-services - 如何终止/终止正在运行的AWS Lambda函数?

amazon-web-services - 当消息存在于 SQS 队列中时触发 AWS 中的 Lambda 函数