Я пытаюсь зарегистрироваться на Facebook в моем приложении Ionic3 / AWS cognito.
Вот код для входа:
facebookSignin(){
// Login with permissions
this.fb.login(['public_profile', 'email'])
.then((loginres: FacebookLoginResponse) => {
// The connection was successful
if (loginres.status === 'connected') {
// Get user infos from the API
this.fb.api('/me?fields=name,gender,birthday,email', [])
.then((profileres: any) => {
const federatedUser = {
name: profileres.name,
email: profileres.email,
role: 'buyers'
};
const facebookResponse: FederatedResponse = {
token: loginres.authResponse.accessToken,
expires_at: loginres.authResponse.expiresIn * 1000 + Date.now()
};
if (!facebookResponse.token) {
return;
}
Auth.federatedSignIn('facebook', facebookResponse, federatedUser)
.then(() => {
Auth.currentAuthenticatedUser()
.then((currentUser) => {
this.amplify.setAuthState({ state: 'signedIn', user: currentUser });
});
});
});
} else { // An error occurred while loging-in
console.log('An error occurred...');
}
})
}
Этот код работает нормально, но позже возникнет проблема.Я использую AWS authstate
, чтобы увидеть, есть ли какие-либо пользователи, вошедшие в систему, и если они есть, я перехожу на вкладки.
Таким образом, этот код проверяет, есть ли они, после входа в Facebook:
getUserRole( authState: any ): UserRole {
console.log(authState);
const idTokenPayload = authState.getSignInUserSession().getIdToken().decodePayload();
const cognitoGroups: String[] = idTokenPayload[ 'cognito:groups' ];
if( cognitoGroups.indexOf( UserRole.admin ) !== -1 )
return UserRole.admin;
let rolesFound = cognitoGroups.filter( (role) => <string>role in UserRole );
if( rolesFound.length === 1 ) {
const role = <UserRole>rolesFound.shift();
return role;
} else if( rolesFound.length > 1 ) {
console.error( 'Multiple roles specified.' );
}
console.error( 'Unspecified role.' );
}
И я получаю эту ошибку:
ОШИБКА TypeError: authState.getSignInUserSession isне функция
Нет проблем при входе / регистрации по электронной почте / паролю:
Auth.signIn(
this.loginForm.get('username').value,
this.loginForm.get('password').value
)
В чем проблема с этой ошибкой после входа в Facebook, она не можетполучить сессию или что?Что мне делать, чтобы он его нашел?