Closed 124525 closed 3 years ago
Server\lib\Web\auth
폴더 내 auth_google.js 파일 외의 다른 파일들의 확장자를 바꾸어 login.js가 인식하지 못하게 만드시면 됩니다.
구글 외 나머지 js 확장자 이름을 .md라고 했는데도 안 되네요... 그리고 이상하건 구글 로그인 아이디는 .com 으로 끝나는데 이게 맞는건가요..
로그에
OAuth Strategy google loaded successfully.
이게 뜨는지 확인해주세요.
그런 표시들은 안 뜨고 그냥 뭐 [2021-04-27 15:52:43] @9amp0ZVIY- login, {} 이런거만 뜨는데...
이런거 알려 주는 영상 강의같은건 없나요...
[2021-04-27 14:46:33] OAuth Strategy google is not loaded
auth.inc.json을 auth.json으로 이름 수정하셨나요
구글 로그인 외부로 설정하지 않아서 발생한 문제 같긴 한데.... localhost로 해도 안 됩니다. 외부로 설정하지 않아서 발생한 문제는 아닌거 같습니다만...
그냥 아예 구글 로그인 자체를 인식을 못하고 있는 것 같습니다. auth.json 파일이 존재하고 그 안에 clientID와 clientSecret 값을 넣으신게 맞나요?
사용자 인증정보에 있는 OAuth 2.0 클라이언트 ID에서 준 아이디와 비번을 넣었습니다. 디스코드 로그인 구현하는 영상을 확인해 보니, 그곳에서는 OAuth2 의 Redirects에서 도메인과 /login/discord를 사용하던데 구글에서도 그것을 추가하는 기능이 있는건가요..
이런 거 말씀 하시는 건가요?
OAuth Strategy google is not loaded
가 나왔다는 것은 login.js에서 auth_google.js 파일을 로드하지 못했다는 말이고 callback URL 설정과는 무관한 그보다 이전에 해결해야할 문제입니다.
구글 OAuth 2.0의 clientID 값은 .com으로 끝나는 것이 맞으며, 구글 OAuth 2.0에서 리디렉션 URL (Callback URL) 설정은 API 및 서비스 -> 사용자 인증 정보 -> 승인된 리디렉션 URI 옵션을 수정하면 됩니다.
auth를 정의하는 도중 문제 발생 => auth_[authType].js 파일이 존재하지 않음
auth.config를 불러오는 도중 문제 발생 => auth.json에 값이 입력되지 않았거나 아예 파일이 부재 auth.json 예제
{
"daldalso": {
"clientID": "q5f5h8j4-q1f4-d8b4-n5v4-h8r41f4g8h4f",
"clientSecret": "87hm4mh1h8n5b2gn9b3b69f5bn8v4b8b47n4c65b54n8c4bn45",
"callbackURL": "/login/daldalso/callback"
}, "naver": {
"clientID": "dROUg-qidg4Df49gfG5",
"clientSecret": "riugr63GF3y",
"callbackURL": "/login/naver/callback"
}, "google": {
"clientID": "495272763769215-5jt8j7gh45hjg2h1g8mh.apps.googleusercontent.com",
"clientSecret": "greu45Hhjgno0rgU74f",
"callbackURL": "/login/google/callback"
}, "discord": {
"clientID": "25761927845125",
"clientSecret": "Eefsdf66RGjt9jg75HJTjtffgh",
"callbackURL": "/login/discord/callback"
}, "kakao": {
"clientID": "u8kj15hj5gj6h9n45m8h5m6hh",
"callbackURL": "/login/kakao/callback"
}, "line": {
"clientID": "75929752813",
"clientSecret": "585j4g4h1g5n4m7g5g1f9d5f8fg5",
"callbackURL": "/login/line/callback"
}, "github": {
"clientID": "h45hj4j1hj5hj6g6",
"clientSecret": "h154g1h0g560mh6h5g9h2h6g9",
"callbackURL": "/login/github/callback"
}
}
(모든 값은 임의의 값. 모두 입력되어 있을 필요는 없으나 사용할 로그인 방식의 clientID와 clientSecret 값은 전부 입력되어 있어야함.)
auth_[authType].js 파일이 존재하고 auth.json에 값을 입력함
=> OAuth Strategy google is not loaded
가 뜰 이유 없음.
[2021-04-27 16:16:34] (ex:0.0.0.0.0) @9amp0ZVIY- login, {}
[2021-04-27 16:17:12] (ex:0.0.0.0.0) @NkQDg6jV8M portal, {}
이렇게 뜨는데..
그 OAuth Strategy google is not loaded
는 로그 초반에 뜬 거고요
ex:0.0.0.0은 제 공인 Ip라서 가린겁니다
그건 그냥 접속 기록 로그입니다.
지금 callback이 딱히 상관 없다는 말씀이신건가요?
일단 지금 로그인 버튼도 안나오는 상황 아닌가요? 그런 상황에서는 callback URL이 우선시 되어야 할 상황이 아닙니다. 물론 callback URL이 설정되어 있지 않으면 로그인 진행 도중 문제가 생기지만 일단 로그인 방식을 login.js에서 인식하게 하는 것이 우선입니다.
저 서버를 껏다 다시 키니까 되는데요....ㅋㅋㅋㅋㅋ 이제는 callback을 해야 되는 건가요?
사용자 인증 정보에서 callback 관리하실 수 있습니다.
callback은 어케 하는거ㅈ
끄투는 프론트엔드 작업을 제외한 거의 모든 작업은 갱신을 위해선 서버 재부팅이 필요합니다. callback URL 설정을 안하셨다면 해야죠. 제가 위에 적어두었습니다.
InternalOAuthError :
C : \ Users \ Neonews \ OneDrive \ 바탕 화면 \ Coding Shout \ KKuTu-5663dd47d53b05c6c16f1e0568eef5b5095e3ca2 \ Server \ lib \ node_modules \ passport-google-oauth2 \ lib \ oauth2.js : 92 : 28
에서 passBackControl 에서 사용자 프로필을 가져 오지 못했습니다 . C : \ Users \ Neonews \ OneDrive \ 바탕 화면 \ Coding Shout \ KKuTu-5663dd47d53b05c6c16f1e0568eef5b5095e3ca2 \ Server \ lib \ node_modules \ oauth \ lib \ oauth2.js : 132 : 9)
at IncomingMessage.
InternalOAuthError? 처음 들어보네요
설정을 다 안하신 것 같은데요 (오류 발생 시 구글링을 위해 번역은 끄시는 게 좋습니다)
사용자 인증 정보의 승인된 자바스크립트 원본, 승인된 리디렉션 URI OAuth 동의 화면의 * 표시가 있는 모든 항목을 전부 작성하셨나요
3개 작성하면 되는거 아닌가요...
번역 전이 InternalOAuthError: failed to fetch user profile 이었던 것 같네요. scope 값이 잘못된 것입니다. 아래와 같이 설정해주세요.
scope: ['profile', 'email']
어디에다가 설정 하는건지 잘 모르것습니다
auth_google.js입니다. 당연히 서버 재부팅 하셔야 적용되구요.
scope: ['profile', 'email']
이렇게 적어도 똑같은 오류가 생기는거 같은데
InternalOAuthError: failed to fetch user profile
at C:\Users\jslim\OneDrive\바탕 화면\정리\KKuTu-5663dd47d53b05c6c16f1e0568eef5b5095e3ca2\Server\lib\node_modules\passport-google-oauth2\lib\oauth2.js:92:28
at passBackControl (C:\Users\jslim\OneDrive\바탕 화면\정리\KKuTu-5663dd47d53b05c6c16f1e0568eef5b5095e3ca2\Server\lib\node_modules\oauth\lib\oauth2.js:132:9)
at IncomingMessage.
package.json 안의
"passport-google-oauth2": "^0.1.6",
을 아래와 같이 바꾸고
"passport-google-oauth2": "^0.2.0",
cmd로 npm install
한번 해보세요
Package.json에
"passport-google-oauth2": "^0.1.6",
이라는 말이 없습니다.
그리고 추가해서
"passport-google-oauth2": "^0.2.0",
이렇게 하면 서버가 실행이 안 되고요
제가 Kkutu 신 버전이 아닌 구버전으로 하고 서버를 구축하고 있습니다.
신버전에는 package.json이 다른 건가요?
제가 한번 확인해 보겠습니다
/server/package.json
말하시는거 아닌가요?
전체 코드가
{ "name": "kkutu-server", "version": "2.5.1", "description": "Rule the words! KKuTu Online Server", "main": "main.js", "scripts": { "start": "electron ." }, "repository": "https://github.com/JJoriping/KKuTu", "keywords": [ "kkutu" ], "author": "JJoriping", "license": "GPL-3.0", "devDependencies": { "electron": "^1.4.15", "electron-packager": "^8.5.1", "electron-pug": "^1.5.1" } }
이렇게 됩니다
/server/package.json에 들어 있는 코드 입니다
제가 말씀드린 건 Server\lib\package.json
입니다.
C:\Users\jslim>npm install npm WARN saveError ENOENT: no such file or directory, open 'C:\Users\ㅁㄴㅇㄹ\package.json' npm WARN enoent ENOENT: no such file or directory, open 'C:\Users\ㅁㄴㅇㄹ\package.json'
오류가 생긴거 같은데...
''cd C:\Users\아몰라\OneDrive\바탕 화면\ㅁㄴㅇㄹ\KKuTu5663dd47d53b05c6c16f1e0568eef5b5095e3ca2\Server\lib/package.json
이렇게 하고 npm install해야 되는거죠?
npm install은 Server\lib
안에서 하시면 됩니다.
되었는데.. 게임을 실행하면 대기상태에서 1초 남기고 서버와 연결이 끊겼다고 합니다 이런 오류는 어떻게 해결하는 건가요?
그건 구글 로그인과 무관한 이슈입니다. 게임 서버와 제대로 연결이 안되었을 가능성이 높지만 디버깅 해봐야 알 수가 있죠.
Pug interceptor registered successfully W: InternalOAuthError: failed to fetch user profile at C:\Users\jslim\OneDrive\諛뷀깢 ?붾㈃\?뺣━\KKuTu-5663dd47d53b05c6c16f1e0568eef5b5095e3ca2\Server\lib\node_modules\passport-google-oauth2\lib\oauth2.js:92:28 at passBackControl (C:\Users\jslim\OneDrive\諛뷀깢 ?붾㈃\?뺣━\KKuTu-5663dd47d53b05c6c16f1e0568eef5b5095e3ca2\Server\lib\node_modules\oauth\lib\oauth2.js:132:9) at IncomingMessage.<anonymous> (C:\Users\jslim\OneDrive\諛뷀깢 ?붾㈃\?뺣━\KKuTu-5663dd47d53b05c6c16f1e0568eef5b5095e3ca2\Server\lib\node_modules\oauth\lib\oauth2.js:157:7) at IncomingMessage.emit (events.js:326:22) at endReadableNT (_stream_readable.js:1241:12) at processTicksAndRejections (internal/process/task_queues.js:84:21)
구글 로그인 하기 전까지는 잘 실행이 되었습니다만..
게임 서버가 열려있는지 확인해주세요.
서버가 정상적으로 켜져 있는ㄷ
localhost는 잘 되는데 포트포워딩된 geraldine.kro.kr 만 안 되네요..
포트포워딩은 특정 도메인을 대상으로 하는 것이 아닙니다. 포트포워딩과는 무관하고, 방화벽 설정은 하셨나요
방화벽은 그냥 나오는거 다 허용했는데.... 수동으로 해야 되는 것이 있나요?
네 당연하죠.
방화벽에서 지금 게임 서버 포트를 통한 웹소켓 통신을 제한하고 있습니다.
고급 보안이 포함된 Windows Defender 방화벽
에서 인바운드 설정을 해주셔야 합니다.
어떻게 하는 건가요...ㅠ localhost로 하는건 그걸 안 해도 됬는데..
원래 이슈는 이런 것까지 세세하게 알려드리는 곳이 아닙니다. (그리고 지금 주제는 이 이슈의 원주제인 구글 로그인과는 한참 멀어졌습니다..) 방화벽 설정은 어떻게 보면 포트포워딩보다 쉬운 작업입니다. 검색하면 다 찾을 수 있는 것들이고 다른 이슈에서도 이미 여러번 언급된 적이 있습니다. localhost -> localhost 통신은 당연히 모든 포트를 통한 모든 접속이 허용됩니다. 하지만 외부에서 접속 시와 도메인을 통한 접속 시에는 그렇지 않죠
포트 번호를 저 4개만 등록하면 되는건가요? 서버와 연결이 종료되었습니다#1006 이라는 표시가 나서..
따로 포트를 변경하거나 하지 않았다면 저 4개가 기본입니다
포트포워딩한 그 포트번호는 안 넣어도 되는건가요?(???)
끄투에서 사용하는 포트는 80, 443, 8080, 8496이 전부인데 어떤 포트를 포워딩하신거죠
제가 Ipv4인가 그걸로 해서 따로 한 제럴딘.온라인.한국 이라는 게 있는데 그거는 딱히 뭐 안 정해도 되는거 같아요
구글 로그인 OAuth에서 나온 아이디와 비번 제 끄투에다가 넣었는데 로그인 버튼이 안 보이네요... 따른걸 보니 뒤에 disabled를 지우라는데 그게 어디있는거죠;;;