建立一個簡單的伺服器(以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

/*jshint esversion: 6 */
(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

/*jshint esversion: 6 */
(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 //FB回呼URL
   },
   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

results matching ""

    No results matching ""