как связать учетные записи nestjs с паспортами?

#passport.js #nestjs

Вопрос:

Попытка связать социальные сети

acebook.stratedy.ts

 @Injectable()
export class FacebookStrategy extends PassportStrategy(Strategy, 'facebook') {
  constructor(private authService: AuthService) {
    super({
      clientID: process.env.FB_CLIENT_ID,
      clientSecret: process.env.FB_CLIENT_SECRET,
      callbackURL: process.env.URL   '/auth/facebook/callback',
      profileFields: ['id', 'displayName', 'photos'],
      passReqToCallback: true,
    });
  }

  async validate(
    req: Request,
    accessToken: string,
    refreshToken: string,
    profile: Profile,
    done: (error: any, user: any, info?: any) => void,
  ): Promise<void> {
    console.log('facebook_req', req.user); // undefined
    const userInfo: IUserPassport = {
      socialID: profile.id,
      typeAuth: EUserTypeAuth.FACEBOOK,
      fullname: profile.displayName,
      avatar: profile.photos[0].value,
    };

    const createdUser: UserEntity = await this.authService.createUser(userInfo);

    const jwtAccessToken: string = await this.authService.createJwtAccessToken({
      sub: createdUser.id.toString(),
      social_id: createdUser.socialID,
      type: createdUser.typeAuth,
    });

    return done(null, jwtAccessToken);
  }
}

 

я хочу войти в систему пользователя, но вместо этого получаю undefined ( req.user )

auth.controller.ts

   @Get('/facebook')
  @UseGuards(FacebookAuthGuard)
  async facebookLogin(): Promise<any> {
    return HttpStatus.OK;
  }

  @Get('/facebook/callback')
  @UseGuards(FacebookAuthGuard)
  async facebookLoginRedirect(@Req() req: Request): Promise<any> {
    return this.authService.authCallback(req);
  }
 

Я хотел, чтобы req.user проверил авторизацию, а затем выбрал, регистрировать ли нового пользователя или добавлять к существующему.

как я могу получить авторизованного пользователя? Есть ли примеры?