Ionic 3 AWS Facebook сессия отсутствует - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь зарегистрироваться на 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, она не можетполучить сессию или что?Что мне делать, чтобы он его нашел?

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