Невозможно прочитать свойство 'encrypted' из undefined

Я пытаюсь настроить google oauth2 с помощью Passportjs и NestJS(Fastify как базовая структура HTTP). Я не могу инициализировать экран аутентификации Google, и ошибка появляется каждый раз, когда я пытаюсь. Я пробовал несколько разных способов сделать это, но похоже, что проблема с AuthGuard, и код каждый раз ломается на этом этапе. Я делюсь фрагментом контроллера, который обрабатывает маршрут для инициализации экрана аутентификации.

Вот контроллер:


import { Controller, Get, Post, Body, UseGuards, Req, Res } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';


@Controller('auth')
export class AuthController {  

  @Get('google')
  @UseGuards(AuthGuard('google'))
  intializeGoogleLogin() {}
}

Стратегия Google:

import { Strategy } from 'passport-google-oauth2';
import { PassportStrategy } from '@nestjs/passport';
import { Injectable, UnauthorizedException } from '@nestjs/common';

@Injectable()
export class GoogleStrategy extends PassportStrategy(Strategy, 'google') {
  constructor() {
    super({
      clientID: <cleintId>,
      clientSecret: <clientSecret>,
      callbackURL: `/auth/google/callback`,
      scope: ['profile', 'email'],
    });
  }
}

Модуль выглядит так:


import { Module } from '@nestjs/common';
import { AuthService } from './auth.service';
import { AuthController } from './auth.controller';
import { GoogleStrategy } from './google.strategy';

@Module({
  imports: [],
  controllers: [AuthController],
  providers: [AuthService, GoogleStrategy],
  exports: [],
})

export class AuthModule {}


Зависимости

"@nestjs/common": "^7.0.0",
"@nestjs/core": "^7.0.0",
"@nestjs/passport": "^7.0.0",
"@nestjs/platform-fastify": "^7.0.5",
"@nestjs/typeorm": "^7.0.0",
"passport": "^0.4.1",
"passport-google-oauth2": "^0.2.0",
"passport-google-oauth20": "^2.0.0",

1 ответ

Вскоре я понял, что PassportJS предназначен для работы только с ExpressJS, и, поскольку я использую Fastify в качестве базовой инфраструктуры HTTP, он действовал неожиданным образом.

Я так желаю, чтобы PassportJS в ближайшее время стал совместимым с другими фреймворками.

Другие вопросы по тегам