Я пытаюсь настроить AWS аутентификацию Cognito в моем приложении react
. Когда я пытаюсь получить некоторые значения из возвращаемого объекта, я получаю следующую ошибку:
Object is of type 'unknown'.ts(2571)
Я ищу способы исправить эту проблему, но не знаю, как мне нужно объявить значение, чтобы исправить это. Код, который у меня есть до сих пор, похож на тот, который содержится в документации npm для AWS Cognito для случаев 1 и 4.
- Код -
import { AuthActionTypes, AuthState } from '../types/auth';
import * as actionTypes from '../types/actionTypes';
import { Dispatch } from 'redux';
import { RootState, RootActionTypes } from '../index.';
import cognitoSignIn from '../../util/SignIn/SignIn';
import cognitoSignUp from '../../util/SignUp/SignUp';
export const authStart = (): AuthActionTypes => {
return {
type: actionTypes.AUTH_START
};
};
export const authSuccess = ( token: string, userId: string ): AuthActionTypes => {
return {
type: actionTypes.AUTH_SUCCESS,
idToken: token,
userId: userId
};
};
export const authFail = ( error: Error ): AuthActionTypes => {
return {
type: actionTypes.AUTH_FAIL,
error: error
};
};
export const auth = (email: string, password: string, loginMethod: string) => {
return ( dispatch: Dispatch<RootActionTypes>, getState: () => RootState) => {
dispatch(authStart());
if (loginMethod === "SignUp") {
cognitoSignUp( email, password );
} else if ( loginMethod === "SignIn" ) {
cognitoSignIn( email, password ).then(
( response ) => { /* HERE IS THE PROBLEM */
dispatch(authSuccess(response.idToken.jwtToken, response.accessToken.payload.client_id));
}).catch(
( err ) => {
console.log(err.message);
dispatch(authFail(err.message));
}
);
};
};
};
cognitoSignIn
находится в SignIn.ts
и выглядит следующим образом:
import { AuthenticationDetails, CognitoUserPool, CognitoUser } from 'amazon-cognito-identity-js';
const cognitoSignIn = (email: string, password: string) => new Promise((resolve, reject) => {
const authenticationData = {
Username: email,
Password: password
};
const authenticationDetails = new AuthenticationDetails( authenticationData );
const poolData = {
UserPoolId : XXXXXXXX,
ClientId : XXXXXXXX
};
const userPool = new CognitoUserPool(poolData);
const userData = {
Username: email,
Pool: userPool
};
const cognitoUser = new CognitoUser( userData );
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: result => {
resolve(result);
},
onFailure: err => {
reject(err);
}
});
});
export default cognitoSignIn;