passport-weixin-plus

0.0.4 • Public • Published

passport-weixin-plus

passport oauth2 strategy for weixin Support multiple appids and appsecrets based on different requests

Install

npm install passport-weixin-plus

Usage

var passport = require('passport')
  , WeixinStrategy = require('passport-weixin-plus')
  ;
 
passport.use(new WeixinStrategy({
  clientID: 'CLIENTID'
  , clientSecret: 'CLIENT SECRET'
  , callbackURL: 'CALLBACK URL'
  , requireState: false
  , scope: 'snsapi_login'
}, function(accessToken, refreshToken, profile, done){
  done(null, profile);
}));
 
or
 
passport.use(new WeixinStrategy({
  clientID: function(req) {
    //return different appid for different req
  },
  clientSecret: function(req) {
    //return different secret for different req
  },
  callbackURL: function(req) {
    //return different callbackURL for different req
  },
  requireState: false,
  scope: 'snsapi_login'
}, function(accessToken, refreshToken, profile, done){
  done(null, profile);
}));

Example

var config = {
  weixinAuth: {
    host2appKeyMap: {
      'demo.mydomain.cn': {
        appkey: '1xxxxxxxxxxxxxxxxx',
        secret: '1yyyyyyyyyyyyyyyyyyyyyyyy'
      },
      'xxx.mydomain.cn': {
        appkey: '2xxxxxxxxxxxxxxxxx',
        secret: '2yyyyyyyyyyyyyyyyyyyyyyyy'
      },
      'www.mydomain.cn': {
        appkey: '3xxxxxxxxxxxxxxxxx',
        secret: '3yyyyyyyyyyyyyyyyyyyyyyyy'
      }
    },
    callbackURL: '/auth/weixin/callback'
  },
};
 
passport.use(new WeixinStrategy({
  clientID: function(req) {
    return config.weixinAuth.host2appKeyMap[req.headers.host].appkey;
  },
  clientSecret: function(req) {
    return config.weixinAuth.host2appKeyMap[req.headers.host].secret;
  },
  callbackURL: function(req) {
    return "http://" + req.headers.host + config.weixinAuth.callbackURL;
  },
  requireState: false,
  scope: 'snsapi_login',
  passReqToCallback: true
}, function(req, token, refreshToken, profile, done) {
  done(null, profile);
}));
 
router.get('/auth/weixin/callback', function(req, res, next) {
  passport.authenticate('weixin', function(err, user, info) {
    if (err) return next(err)
 
    //do anything as you like
 
    res.send(user);
  })(req, res, next);
});

License

MIT

Package Sidebar

Install

npm i passport-weixin-plus

Weekly Downloads

0

Version

0.0.4

License

MIT

Last publish

Collaborators

  • lutaoact