[express.js] Kakao OAuth 소셜 로그인

김민재·2024년 4월 5일

express.js

목록 보기
31/39

Kakao OAuth login 로직 구현

  • npm i passport-kakao
  1. app.js에 passport kakao을 설정해줘야 한다.
app.get("/auth/kakao", passport.authenticate("kakao"));
  • auth/kakao 경로로 이동할 시 passport kakao 실행된다.
    즉, 밑에 작성한 passport.js 파일에서 kakao 함수가 실행되는 것
  1. passport.js 파일에 passport.use를 이용해서 kakao 소셜 로그인을 이용할 수 있게 한다.

const KakaoStrategyConfig = new KakaoStrategy(
  {
  // REST API KEY
    clientID: process.env.KAKAO_CIIENT_ID,
    clientSecret: "",
    callbackURL: "/auth/kakao/callback",
  },
  async (accessToken, refreshToken, profile, done) => {
    try {
      const user = await User.findOne({ kakaoId: profile.id });
      if (user) {
        // done(null은 에러는 없고) user정보를 전달해준다.
        return done(null, user);
      } else {
        const newUser = new User({
          kakaoId: profile.id,
        });

        await newUser.save();
        return done(null, user);
      }
    } catch (err) {
      console.log(err);
    }
  }
);

passport.use("kakao", KakaoStrategyConfig);

  • 여기까지가 유저의 kakaoId 권한을 요청하고, 권한 부여 후 액세스 코드와 함께 콜백 주소로 리디렉션된다.
    이렇게 되면 사용자는 웹을 사용하게 되는 권한을 부여받는다.

  • 리디렉션이 되면 profile 정보는 console.log에 찍힌다.

  • db에서 kakaoId 같은 게 있으면 그대로 유저 정보를 전달해주며 로그인이 성공하고,

  • db에 kakaoId 같은 게 없으면 db에 저장을 하고 로그인이 실행된다.

  1. 리디렉션 된 callbackURL 코드를 만들어줘야한다.
// app.js
app.get(
  "/auth/kakao/callback",
  passport.authenticate("kakao", {
    successReturnToOrRedirect: "/",
    failureRedirect: "/login",
  })
);
  • 성공을 하면 / 경로로 이동하고, 실패를 하면 /login 경로로 이동한다.

// 아쉽게도 KAKAO는 정식 앱 신청을 받아야지 email 정보를 받아올 수 있다.

깃허브 소스 코드

profile
개발 경험치 쌓는 곳

0개의 댓글