[typescript] Nest.js에서 타입스크립트를 사용한 소셜 로그인 처리
Nest.js는 TypeScript로 작성된 서버 사이드 어플리케이션을 빌드하기 위한 프레임워크이며, 소셜 로그인을 구현할 때도 효율적으로 사용될 수 있습니다.
소셜 로그인이란?
소셜 로그인은 사용자가 별도의 계정을 생성하지 않고 소셜 미디어 계정(예: 구글, 페이스북, 트위터 등)을 통해 로그인할 수 있는 기능을 말합니다.
Nest.js와 Passport를 이용한 소셜 로그인 구현
Nest.js에서는 Passport 모듈을 통해 간편하게 소셜 로그인을 구현할 수 있습니다. 또한, Passport 모듈을 사용함으로써 OAuth 또는 OpenID 기반의 인증을 손쉽게 처리할 수 있습니다.
@Module({
imports: [
PassportModule,
AuthModule,
],
providers: [AuthService, GoogleStrategy],
controllers: [AuthController],
})
export class AuthModule {}
위의 예제에서 GoogleStrategy
는 구글 OAuth를 사용한 로그인 전략을 정의한 클래스입니다.
아래는 GoogleStrategy
클래스의 예제입니다.
@Injectable()
export class GoogleStrategy extends PassportStrategy(Strategy, 'google') {
constructor(private readonly authService: AuthService) {
super({
clientID: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_SECRET,
callbackURL: 'http://localhost:3000/auth/google/callback',
passReqToCallback: true,
scope: ['email', 'profile'],
});
}
async validate(request: any, accessToken: string, refreshToken: string, profile, done: Function) {
const { name, emails, photos } = profile;
const user = await this.authService.validateOAuthLogin(emails[0].value, 'google');
if (!user) {
return done(null, false);
}
done(null, user);
}
}
GoogleStrategy
클래스는 Passport의 PassportStrategy
를 상속하고, validate
메서드를 구현하여 사용자 정보를 기반으로 인증을 수행합니다.
마치며
Nest.js와 Passport를 사용하여 타입스크립트로 간단하게 소셜 로그인을 구현할 수 있습니다. 소셜 로그인을 통해 사용자들은 더 편리하게 어플리케이션에 접속할 수 있고, 애플리케이션의 사용자 경험을 향상시킬 수 있습니다.