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

Hyunseok Song님의 프로필 이미지
Hyunseok Song

작성한 질문수

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

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

작성

·

2.8K

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

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

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

0

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

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

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

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

0

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

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

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

다음과 같이 나옵니다.

$ process.env.KAKAO_ID

bash: process.env.KAKAO_ID: command not found

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

0

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

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

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

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);
        }
    }));
};
Hyunseok Song님의 프로필 이미지
Hyunseok Song

작성한 질문수

질문하기