Извлечение данных профиля пользователя auth0 в качестве полезной нагрузки действия в auth.effect.ts - PullRequest
0 голосов
/ 10 декабря 2018

Я довольно новичок в редуксе.Поэтому я использую ngRx в своем угловом приложении и пытаюсь добавить к нему auth0.И в моем auth.effect.ts я пытаюсь получить данные профиля пользователя и затем отправить их в качестве полезной нагрузки для действия.Я не уверен, как это сделать.Вот как я пытался.Но так как метод получения профиля пользователя асинхронный, он не работает, но я не уверен, как это исправить.

auth.service.ts

  userProfile: any;
  auth0Profile(authResult,cb):void{

     this._Auth0.client.userInfo(authResult.accessToken, (err, profile) => {
      if (profile) {

        this.userProfile = profile;
      }
      cb(err, profile);
     });

   }

auth.effect.ts

  @Effect()
  loginComplete$ = this.actions$
    .ofType<fromAuth.LoginComplete>(fromAuth.AuthActionTypes.LoginComplete)
    .pipe(
      exhaustMap(() => {
        return this.authService.parseHash$().pipe(
          map((authResult: any) => {
            if (authResult && authResult.accessToken) {

                this.authService.auth0Profile(authResult,(err, profile) => {
                  console.log(profile);
                  this.userProfile=profile;
                  return new fromAuth.LoginSuccess(this.userProfile);

                });




            }else{
              return false;
            }
          }),


          catchError(error => of(new fromAuth.LoginFailure(error)))
        );
      })
    );
...