인프런 커뮤니티 질문&답변

Hyunseok Song님의 프로필 이미지

작성한 질문수

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

카카오 로그인하기 도중 에러 질문입니다.

21.03.10 01:05 작성

·

2.7K

0

E:\프로그래밍\Nodejs_Master_Project\9.Express로SNS서비스만들기\node_modules\passport-oauth2\lib\strategy.js:83

  if (!options.clientID) { throw new TypeError('OAuth2Strategy requires a clientID option'); }

                           ^

 

TypeError: OAuth2Strategy requires a clientID option

    at Strategy.OAuth2Strategy (E:\프로그래밍\Nodejs_Master_Project\9.Express로SNS서비스만들기\node_modules\passport-oauth2\lib\strategy.js:83:34)

    at new Strategy (E:\프로그래밍\Nodejs_Master_Project\9.Express로SNS서비스만들기\node_modules\passport-kakao\dist\Strategy.js:33:31)

    at module.exports (E:\프로그래밍\Nodejs_Master_Project\9.Express로SNS서비스만들기\passport\kakaoStrategy.js:7:18)

    at module.exports (E:\프로그래밍\Nodejs_Master_Project\9.Express로SNS서비스만들기\passport\index.js:27:5)

    at Object.<anonymous> (E:\프로그래밍\Nodejs_Master_Project\9.Express로SNS서비스만들기\app.js:38:1)

    at Module._compile (internal/modules/cjs/loader.js:1063:30)

    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)

    at Module.load (internal/modules/cjs/loader.js:928:32)

    at Function.Module._load (internal/modules/cjs/loader.js:769:14)

    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)

[nodemon] app crashed - waiting for file changes before starting...

npm start로 실행하면 다음과 같이 passport-oauth2에서 오류가 난다고 하는데,

강의에서는 이번에는 accessToken, refreshToken 와 같은 oauth2에 관련된 것은 사용하지 않는다고 들었습니다.

해당 오류는 어떻게 해결해야 하나요?

답변 4

0

ysm6514님의 프로필 이미지

2023. 08. 03. 23:08

저도 같은 에러가 발생했는데,

.env 파일에 KAKAOID 오타 발생해서 KAKAO_ID로 수정해서 해결하였습니다.

0

TORI님의 프로필 이미지

2022. 05. 28. 02:10

동일한 내용으로 검색해서 들어왔습니다. 

작년에 올리셨지만 이후 들어오실 분께 도움될까해서 남깁니다.

저는 dotenv.config()이렇게 했을때 .env 파일을 읽지 못하는지 다른 환경변수도 읽지 못해서 아래와 같이 수정해서 사용했습니다.

dotenv.config({path: path.join(__dirname, '/.env')});

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2021. 03. 10. 12:36

process.env.KAKAO_ID를 콘솔로 찍어서 들어있는지 확인해보세요.

Hyunseok Song님의 프로필 이미지
Hyunseok Song
질문자

2021. 03. 15. 22:05

다음과 같이 나옵니다.

$ process.env.KAKAO_ID

bash: process.env.KAKAO_ID: command not found

이 경우에는 어떻게 해결해야 할까요?

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2021. 03. 10. 07:35

KakaoStrategy에서 clientId 부분 넣으셨나요?

Hyunseok Song님의 프로필 이미지
Hyunseok Song
질문자

2021. 03. 10. 10:20

passport.use에서 생성한 KakaoStrategy객체에서 clientID와 callbackURL 만들었습니다.

KakaoStrategy 부분은 다음과 같이 작성하고 돌렸는데, 아직도 동일한 오류가 발생합니다.

const passport = require('passport');
const KakaoStrategy = require('passport-kakao').Strategy;

const User = require('../models/user');

module.exports = () => {
    passport.use(new KakaoStrategy({
        // 카카오라는 서비스로 로그인을 하도록 구현을 하는 것이기 때문에 설정을 해주어야 함
        // developers.kakao.com에서 로그인 해야함 -> 내 application들어가서 애플리케이션을 추가함
        clientIDprocess.env.KAKAO_ID,
        callbackURL'/auth/kakao/callback',
        // accessToken, refreshToken -> 토큰으로 직접 카카오에게 요청을 보낼 수 있음 -> OAUTH2
        // 이 앱에서는 profile만 받아옴
    }, async(accessTokenrefreshTokenprofiledone=> {
        console.log('kakao profile'profile);
        try{
            const exUser = await User.findOne({
                // 카카오로 가입한 사람 check
                where: {snsIdprofile.idprovider'kakao' },
            });
            // 가입한 사람이 있으면 성공
            if(exUser){
                done(nullexUser);
            }
            // 가입한 사람이 없으면 회원가입
            else{
                const newUser = await User.create({
                    emailprofile._json && profile._json.kakao_account_email,
                    nickprofile.displayName,
                    snsIdprofile.id,
                    provider'kakao',
                });
                done(nullnewUser);
            }
        }
        catch(error){
            console.error(error);
            done(error);
        }
    }));
};