Ошибка входа пользователя в Angular / AWS Cognito - свойство «refresh» не существует для типа «учетные данные» - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь настроить логин пользователя для моего приложения Angular 7 и создал большую часть метода cognitoUser.authenticateUser(), но в методе onSuccess() я не могу обновить учетные данные конфигурации AWS, потому что я получаю следующую ошибку при AWS.config.credentials.refresh() * * 1004

«Свойство refresh» не существует для типа «Credentials | CredentialsOptions». Свойство refresh не существует для типа «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) {

        }
    }
  }

}

1 Ответ

0 голосов
/ 02 января 2019
AWS.config.credentials.refresh(err => {
  // ISSUE HERE
})

замените приведенный выше код следующим

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

});

Это называется приведением переменной

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...