Showing
3 changed files
with
52 additions
and
51 deletions
... | @@ -3,69 +3,70 @@ var router = express.Router(); | ... | @@ -3,69 +3,70 @@ var router = express.Router(); |
3 | var UserModel = require('../models/UserModel'); | 3 | var UserModel = require('../models/UserModel'); |
4 | var passport = require('passport'); | 4 | var passport = require('passport'); |
5 | var FacebookStrategy = require('passport-facebook').Strategy; | 5 | var FacebookStrategy = require('passport-facebook').Strategy; |
6 | +const GoogleStrategy = require('passport-google-oauth20').Strategy; | ||
6 | 7 | ||
7 | passport.serializeUser(function (user, done) { | 8 | passport.serializeUser(function (user, done) { |
8 | - done(null, user); | 9 | + done(null, user); |
9 | }); | 10 | }); |
10 | 11 | ||
11 | passport.deserializeUser(function (user, done) { | 12 | passport.deserializeUser(function (user, done) { |
12 | - done(null, user); | 13 | + done(null, user); |
13 | }); | 14 | }); |
14 | 15 | ||
15 | -passport.use(new FacebookStrategy({ | 16 | +passport.use( |
16 | - // https://developers.facebook.com에서 appId 및 scretID 발급 | 17 | + new GoogleStrategy( |
17 | - clientID: "863352300499259", //입력하세요 | 18 | + { |
18 | - clientSecret: "36867723fbdd49dac987f9a061e2206a", //입력하세요. | 19 | + clientID: |
19 | - callbackURL: "http://localhost:3000/auth/facebook/callback", | 20 | + '912554148550-gq86jjjgc022b1eit50mboh5lq48covi.apps.googleusercontent.com', |
20 | - profileFields: ['id', 'displayName', 'photos', 'email'] //받고 싶은 필드 나열 | 21 | + clientSecret: '_EzuXeN7eNCTbcGQUV4kY1pN', |
22 | + callbackURL: 'http://localhost:3000/auth/google/callback', | ||
23 | + profileFields: ['id', 'displayName', 'photos', 'email'], //받고 싶은 필드 나열 | ||
21 | }, | 24 | }, |
22 | - function(accessToken, refreshToken, profile, done) { | 25 | + function (accessToken, refreshToken, profile, done) { |
23 | - //아래 하나씩 찍어보면서 데이터를 참고해주세요. | 26 | + UserModel.findOne( |
24 | - //console.log(profile); | 27 | + { username: 'goo_' + profile.id }, |
25 | - //console.log(profile.displayName); | 28 | + function (err, user) { |
26 | - //console.log(profile.emails[0].value); | 29 | + if (!user) { |
27 | - //console.log(profile._raw); | 30 | + //없으면 회원가입 후 로그인 성공페이지 이동 |
28 | - //console.log(profile._json); | 31 | + var regData = { |
29 | - UserModel.findOne({ username : "fb_" + profile.id }, function(err, user){ | 32 | + //DB에 등록 및 세션에 등록될 데이터 |
30 | - if(!user){ //없으면 회원가입 후 로그인 성공페이지 이동 | 33 | + username: 'goo_' + profile.id, |
31 | - var regData = { //DB에 등록 및 세션에 등록될 데이터 | 34 | + password: 'google_login', |
32 | - username : "fb_" + profile.id, | 35 | + displayname: profile.displayName, |
33 | - password : "facebook_login", | 36 | + }; |
34 | - displayname : profile.displayName | 37 | + var User = new UserModel(regData); |
35 | - }; | 38 | + User.save(function (err) { |
36 | - var User = new UserModel(regData); | 39 | + //DB저장 |
37 | - User.save(function(err){ //DB저장 | 40 | + done(null, regData); //세션 등록 |
38 | - done(null,regData); //세션 등록 | 41 | + }); |
39 | - }); | 42 | + } else { |
40 | - }else{ //있으면 DB에서 가져와서 세션등록 | 43 | + //있으면 DB에서 가져와서 세션등록 |
41 | - done(null,user); | 44 | + done(null, user); |
42 | - } | 45 | + } |
43 | - | 46 | + } |
44 | - }); | 47 | + ); |
45 | } | 48 | } |
46 | -)); | 49 | + ) |
50 | +); | ||
47 | 51 | ||
48 | // http://localhost:3000/auth/facebook 접근시 facebook으로 넘길 url 작성해줌 | 52 | // http://localhost:3000/auth/facebook 접근시 facebook으로 넘길 url 작성해줌 |
49 | -router.get('/facebook', passport.authenticate('facebook', { scope: 'email'}) ); | 53 | +router.get('/google', passport.authenticate('google', { scope: ['profile'] })); |
50 | - | ||
51 | 54 | ||
52 | //인증후 페이스북에서 이 주소로 리턴해줌. 상단에 적은 callbackURL과 일치 | 55 | //인증후 페이스북에서 이 주소로 리턴해줌. 상단에 적은 callbackURL과 일치 |
53 | -router.get('/facebook/callback', | 56 | +router.get( |
54 | - passport.authenticate('facebook', | 57 | + '/google/callback', |
55 | - { | 58 | + passport.authenticate('google', { |
56 | - successRedirect: '/', | 59 | + failureRedirect: '/auth', |
57 | - failureRedirect: '/auth/facebook/fail' | 60 | + successRedirect: '/', |
58 | - } | 61 | + }) |
59 | - ) | ||
60 | ); | 62 | ); |
61 | //로그인 성공시 이동할 주소 | 63 | //로그인 성공시 이동할 주소 |
62 | -router.get('/facebook/success', function(req,res){ | 64 | +router.get('/google/success', function (req, res) { |
63 | - res.send(req.user); | 65 | + res.send(req.user); |
64 | }); | 66 | }); |
65 | 67 | ||
66 | -router.get('/facebook/fail', function(req,res){ | 68 | +router.get('/google/fail', function (req, res) { |
67 | - res.send('facebook login fail'); | 69 | + res.send('google login fail'); |
68 | }); | 70 | }); |
69 | 71 | ||
70 | - | ||
71 | -module.exports = router; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
72 | +module.exports = router; | ... | ... |
... | @@ -23,8 +23,8 @@ | ... | @@ -23,8 +23,8 @@ |
23 | <!-- Change this to a button or input when using this as a form --> | 23 | <!-- Change this to a button or input when using this as a form --> |
24 | <div class="d-grid gap-2 col-11 mx-auto p-2"> | 24 | <div class="d-grid gap-2 col-11 mx-auto p-2"> |
25 | <input type="submit" class="btn btn-lg btn-success btn-block" value="가입하기"> | 25 | <input type="submit" class="btn btn-lg btn-success btn-block" value="가입하기"> |
26 | - <a href="/auth/facebook" class="btn btn-lg btn-primary btn-block"> | 26 | + <a href="/auth/google" class="btn btn-lg btn-danger btn-block"> |
27 | - <i class="fa fa-facebook" aria-hidden="true"></i> 페이스북 회원가입 | 27 | + <i class="fa fa-google" aria-hidden="true"></i> Google 회원가입 |
28 | </a> | 28 | </a> |
29 | </div> | 29 | </div> |
30 | </fieldset> | 30 | </fieldset> | ... | ... |
... | @@ -22,8 +22,8 @@ | ... | @@ -22,8 +22,8 @@ |
22 | <!-- Change this to a button or input when using this as a form --> | 22 | <!-- Change this to a button or input when using this as a form --> |
23 | <div class="d-grid gap-2 col-11 mx-auto p-2"> | 23 | <div class="d-grid gap-2 col-11 mx-auto p-2"> |
24 | <input type="submit" class="btn btn-lg btn-success btn-block" value="로그인"> | 24 | <input type="submit" class="btn btn-lg btn-success btn-block" value="로그인"> |
25 | - <a href="/auth/facebook" class="btn btn-lg btn-primary btn-block"> | 25 | + <a href="/auth/google" class="btn btn-lg btn-danger btn-block"> |
26 | - <i class="fa fa-facebook" aria-hidden="true"></i> 페이스북 로그인 | 26 | + <i class="fa fa-google" aria-hidden="true"></i> Google 로그인 |
27 | </a> | 27 | </a> |
28 | </div> | 28 | </div> |
29 | </fieldset> | 29 | </fieldset> | ... | ... |
-
Please register or login to post a comment