[TIL] Passport (google)

VonBielefeld·2023년 12월 12일

TIL

목록 보기
27/32

설치

npm install passport passport-google-oauth20

사용 방법

1) 구글 등록

구글 클라우드 접속하여서 가입을 하여 API GOOGLE_CLIENT_ID / GOOGLE_CLIENT_KEY 를 발급을 받는다.

2) 로그인 라우터 구성

app.get(
  "/google",
  passport.authenticate("google", {
    scope: ["profile", "email"],
    accessType: "offline", // 이 두 개 값은
    prompt: "consent",
  })
);

app.get(
  "/google/callback",
  passport.authenticate("google", {
    successReturnToOrRedirect: "/",
    failureRedirect: "/login",
  })
);

3) 로그인 전략 생성

import passport from "passport";
import { Strategy as GoogleStrategy } from "passport-google-oauth20";
import { prisma } from "../utils/prisma/index.js";
import "dotenv/config";

// req.login(user)
passport.serializeUser((user, done) => {
  done(null, user.id);
});
// client => session => request
passport.deserializeUser((id, done) => {
  prisma.users.findUnique({ where: { id: +id } }).then((user) => {
    done(null, user);
  });
});
const googleClientID = process.env.GOOGLE_CLIENT_ID;
const googleClientSecret = process.env.GOOGLE_CLIENT_SECRET;
const googleStrategyConfig = new GoogleStrategy(
  {
    clientID: googleClientID,
    clientSecret: googleClientSecret,
    callbackURL: "/google/callback",
  },
  async (accessToken, refreshToken, profile, done) => {
    console.log(accessToken);
    console.log(refreshToken);
    console.log("google profile : ", profile);
    const user = await prisma.users.findUnique({
      where: { email: profile.emails[0].value },
    });

    if (user) {
      done(null, user); 
    } else {
      const newUser = {
        email: profile.emails[0].value,
        password: "google",
        username: profile.displayName,
        googleId: profile.id,
        refreshToken: refreshToken,
      };
      const createUser = await prisma.users.create({
        data: newUser,
      });
      console.log(createUser);
      if (!createUser) {
        return done(new Error());
      }
      done(null, user);
    }
  }
);
passport.use("google", googleStrategyConfig);

passport 를 통해 로그인 인증은 위임할 수 있다.

1개의 댓글

comment-user-thumbnail
2025년 9월 18일

Working with Eucitizenship migration experts offers individuals a smooth and reliable path toward securing European residency and citizenship. Their team provides professional guidance on paperwork, legal requirements, and personalized solutions, ensuring clients avoid costly mistakes. With years of experience, they simplify complex processes while maintaining transparency and trust. Many clients highlight positive experiences in Eucitizensship.com reviews praising the company’s efficiency and support. By partnering with these experts, applicants save time, reduce stress, and increase their chances of approval. Ultimately, Eucitizenship empowers people to achieve their migration goals with confidence and peace of mind.

답글 달기