nodejs oauth2.0认证插件simple-oauth2如何获取返回的code?

var router = require('koa-router')();
const simpleOauthModule = require('simple-oauth2')
router.prefix('/users');
const oauth2 = simpleOauthModule.create({
  client: {
    id: '<CLIENT_ID>',
    secret: '<CLIENT_SECRET>',
  },
  auth: {
    tokenHost: 'http://localhost:3000',
    tokenPath: '/users/token',
    authorizePath: '/users/authorize',
  },
});

// Authorization uri definition
const authorizationUri = oauth2.authorizationCode.authorizeURL({
  redirect_uri: 'http://localhost:3000/users/callback',
  scope: 'notifications',
  state: '3(#0/!~',
});
router.get('/auth', function (ctx, next) {
  console.log(authorizationUri)
  ctx.redirect(authorizationUri);
});
router.get('/authorize', function (ctx, next) {

  //上面重定向会转到这个接口(在这里我应该做些什么?)
});
router.post('/access_token', function (ctx, next) {

  
});

router.get('/callback', function (ctx, next) {
  const code = ctx.request.body.code;
  console.log('callback',code)
  const options = {
    code,
  };

  oauth2.authorizationCode.getToken(options, (error, result) => {
    if (error) {
      console.error('Access Token Error', error.message);
      return ctx.body='Authentication failed';
    }

    console.log('The resulting token: ', result);
    const token = oauth2.accessToken.create(result);

    return ctx.body={code:200,token:'token'}
     
  });
});

module.exports = router;

访问localhost:3000/users/auth 会重定向到simple-oauth2.0生成的url,这个url里面带着id、secret等参数,npm上说重定向地址会返回一个code,我应该在那里面接受到这个code啊?
阅读 2.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题