Notice
Recent Posts
Recent Comments
Link
스토리지
[07.08] Unity 카카오 로그인 구현 1 - 서버를 이용해서 로그인 본문
- 서버 : Node.js + AWS EC2
- 클라이언트 : Unity
- 사용 npm패키지 : passport-kakao
카카오 개발자센터에서 앱을 먼저 등록해야함.
* 먼저 검증을 위해서 localhost에서 테스트 진행
app.js
const express = require("express");
const app = express();
const passport = require("passport");
const KakaoStrategy = require("passport-kakao").Strategy;
let user = {};
passport.use(
new KakaoStrategy(
{
clientID: clientID,
clientSecret: clientSecret, // clientSecret을 사용하지 않는다면 넘기지 말거나 빈 스트링을 넘길 것
callbackURL: "http://localhost:3030/auth/kakao/callback",
},
(accessToken, refreshToken, profile, done) => {
let raw = JSON.parse(profile["_raw"]); //문자열을 객체로 parsing
user.id = raw.id;
user.nickname = raw.kakao_account.profile.nickname;
user.profile_image_url = raw.kakao_account.profile.profile_image_url;
done(null, user);
}
)
);
app.get("/auth/kakao", passport.authenticate("kakao", null), (req, res) => {
console.log("failed");
});
app.get(
"/auth/kakao/callback",
passport.authenticate("kakao", (err, user) => {
console.log(user);
})
);
app.get("/", (req, res) => {
res.send("<h1>hello express!!</h1>");
});
app.listen(3030, () => {
console.log("server is running at 3030 port.");
});
_raw는 텍스트이기에 객체로 변환 후 안의 값을 뽑아내야한다..
* passport-kakao
https://www.npmjs.com/package/passport-kakao
passport-kakao
kakao oauth2 login module
www.npmjs.com
위에서 저렇게 하면 결과가 console창에만 찍히고 응답이 없다. 하지만 callback 라우터에는 response할 객체가 없다.
그래서 코드수정이 필요하다.
app.get("/auth/kakao/callback", (req, res) => {
passport.authenticate("kakao", (err, user) => {
console.log(user);
const json = JSON.stringify(user);
res.send(json);
})(req, res);
});
* 전체코드
npm init -y
npm i express passport passport-kakao nodemon
const express = require("express");
const app = express();
const passport = require("passport");
const KakaoStrategy = require("passport-kakao").Strategy;
let user = {};
passport.use(
new KakaoStrategy(
{
clientID: "876c53a0c0b1e0ff13917d6cbbe38d11",
clientSecret: "3pEqq255zsZJGD3lGp9ETtC34xWZ3oyg", // clientSecret을 사용하지 않는다면 넘기지 말거나 빈 스트링을 넘길 것
callbackURL: "http://localhost:3030/auth/kakao/callback",
},
(accessToken, refreshToken, profile, done) => {
let raw = JSON.parse(profile["_raw"]); //문자열을 객체로 parsing
user.id = raw.id;
user.nickname = raw.kakao_account.profile.nickname;
user.profile_image_url = raw.kakao_account.profile.profile_image_url;
done(null, user);
}
)
);
app.get("/auth/kakao", passport.authenticate("kakao", null), (req, res) => {
console.log("failed");
});
app.get("/auth/kakao/callback", (req, res) => {
passport.authenticate("kakao", (err, user) => {
console.log(user);
const json = JSON.stringify(user);
res.send(json);
})(req, res);
});
app.listen(3030, () => {
console.log("server is running at 3030 port.");
});
'Node.js' 카테고리의 다른 글
[07.13] SQL - Procedure (0) | 2021.07.13 |
---|---|
[07.08] Unity 카카오 로그인 구현 2 - Unity에서 WebView로 구현하기 (0) | 2021.07.08 |
[06.16] Sequelize (0) | 2021.06.16 |
[06.15] mySQL Node.js 연동 (0) | 2021.06.15 |
[06.15] Node.js 로 mySQL DB와 연결 (0) | 2021.06.15 |
Comments