code: function passport_strategy_set() {
      // SESSION START
      passport.serializeUser( (user,done) => {
  		//console.log(user)
          //done(null, user.id) // user.id - from DB (id is pk)
          done(null, user)
      })
      passport.deserializeUser( (id,done) => {
          //findById(id)
          done(null, { id: 1 } )
      })
      // SESSION END
  	
      let authProcessor = (accessToken, refreshToken, profile, done) => {
  		//console.log(accessToken, refreshToken, profile)
  		profile.accessToken = accessToken
  		done(null, profile)
  		// profile.id - returned from FB, check if in db
  		// profile.displayName, profile.photos[0].value
  		// if yes return user data, if not insert into db and return
  
  		// asynchronous verification, for effect...
  		//process.nextTick(function () {
  			// To keep the example simple, the user's Instagram profile is returned to represent the logged-in user.  In a typical application, you would want
  			// to associate the Instagram account with a user record in your database, and return that user instead.
  			//return done(null, profile)
  		//})
  
      }
  
      // passport.use( new FacebookStrategy(fb, authProcessor) )
      // passport.use( new TwitterStrategy(tw, authProcessor) )
      // passport.use( new InstagramStrategy(ig, authProcessor) )
      // passport.use( new LinkedinStrategy(li, authProcessor) )	
  	// passport.use(new GoogleStrategy(google, authProcessor) )
      passport.use(new GitHubStrategy(github, authProcessor) )        
  }
docs: /*
  const li = {
  clientID: "",
  clientSecret: "",
  callbackURL: CALLBACK_URL + "/auth/linkedin/callback",
  DOES NOT USE THIS! profileFields: ["id", "displayName", "photos"],
  scope: ['r_emailaddress', 'r_basicprofile'],
  state: true // AUTO State (requires session) required for linked-in to prevent CSRF
  }