nestjs-google-auth
Version:
A reusable NestJS module for Google authentication using Passport.
81 lines (59 loc) • 2.25 kB
Markdown
# Google Login Package for NestJS
A simple and reusable package for integrating Google login with NestJS using `passport-google-oauth2`. This package simplifies the process of authenticating users with Google by providing the strategy and module, leaving the control of user flow and logic up to you.
## Features
- Easy-to-use package for Google login integration with NestJS
- Pre-configured `passport-google-oauth2` strategy
- Customizable user validation logic (you implement the controller and service)
## Installation
1. Install the package via npm:
```bash
npm install nestjs-google-auth
```
2. Install the necessary Passport dependencies if they are not already installed
```bash
npm install passport passport-google-oauth2
```
3. Install the type definitions for Passport (for TypeScript support):
```bash
npm install --save-dev @types/passport
```
4. Install the express-session and passport if you are using sessions (if the package is not already installed):
```bash
npm install passport express-session
```
5. Add environment variables to your .env file:
```bash
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
GOOGLE_CALLBACK_URL=your-google-callback-url
```
## Usage
1. Import the GoogleAuthModule & GoogleAuthController to your AppModule:
```
@Module({
imports: [
GoogleAuthModule.forRoot({
clientID: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
callbackURL: process.env.GOOGLE_CALLBACK_URL,
scope: ['profile', 'email'],
session: false,
}),
],
controllers: [AppController, AuthController],
providers: [AppService],
})
export class AppModule {}
```
2. If you are using sessions, you should configure the session in your main.ts file using express-session:
```
app.use(
session({
secret: 'your-secret-key',
resave: false,
saveUninitialized: true,
}),
);
app.use(passport.session());
```
3. Test your application by redirecting to the default routes "/auth/google"