建立一個簡單的伺服器(以nodejs為例)
1.首先我們先建立一個資料夾,然後他的架構如下:
passport.js:nodejs的passport初始化時使用的js檔
config.json:這裡放置我們的應用程式使用OAuth2.0時會需要的資訊
index.js:這裡放置我們的伺服器程式碼
2.打開應用程式畫面,左邊選單有一個主控版,按下去之後就會來到應用程式首頁,並看到應用程式的編號與應用程式密鑰,將他們記下來
3.打開config.json檔,填入你剛剛得到的資訊,就像下圖這樣
clientID:應用程式編號
clientSecret:應用程式密鑰,請妥善保管喔!如果不慎外流了,也可以回Facebook主控版去進行重設。
callbackURL:在這裡填入你先前在應用程式設定的重新導向URI
4.打開index.js檔,撰寫你的伺服器程式如下:
index.js
(function() {
'use strict';
const express = require('express');
const bodyParser = require('body-parser');
const compression = require('compression');
const morgan = require('morgan');
const timeout = require('connect-timeout');
const path = require('path');
let passport = require('passport');
const PORT = 7777;
let app = express();
require('./mod/passport.js')(passport);
app.set('trust proxy', 1);;
app.use(morgan('common'));
app.use(timeout('20s'));
app.use(compression());
app.use(bodyParser.json());
app.use(passport.initialize());
app.use(passport.session());
app.get('/facebook', passport.authenticate('facebook', {
scope: ['public_profile', 'email']
}));
app.get('/callback', function(req, res, next) {
passport.authenticate('facebook', function(err, user, info) {
return res.send({
user : user,
info : info
});
})(req, res, next);
});
app.listen(PORT, function() {
console.log(`Service is ready on port ${PORT}`);
});
}());
5.打開passport.js檔,撰寫程式如下:
passport.js
(function() {
'use strict';
const SECRET = require('../config.json');
let FacebookStrategy = require('passport-facebook').Strategy;
module.exports = function(passport){
passport.serializeUser(function(sToken, callback){
callback(null, sToken);
});
passport.deserializeUser(function(sToken, callback){
callback(null, sToken);
});
passport.use(new FacebookStrategy({
clientID : SECRET.clientID,
clientSecret : SECRET.clientSecret,
callbackURL : SECRET.callbackURL
},
function(accessToken, refreshToken, profile, callback){
console.log('FB accessToken',accessToken);
console.log('FB profile', profile);
return callback(null, accessToken);
}));
};
}());
6.準備完畢,啟動伺服器吧!
在終端機輸入:
node index.js
成功開啟的情況下,你會在終端機看到這條訊息:
Service is ready on port 7777