微信公众号H5用户受权

 其实不是很难,总结起来就是:ios

1.微信公众号管理后台设置redirect_uri。express

2.而后发起一个请求去重定向获取code,而后把获取到code以后重定向的URL放在获取code的URL中axios

3.获取到code以后就能够获取到openid一些之类的信息了api

上代码:微信

const express = require('express')
const router = express.Router()

router.get('/oauth2/snsapi_base', function (req, res, next) {
  const redirectUrl = 'beta.weixin.douanquan.com/weixin/oauth2/snsapi_base_cb?sourceurl=' +
    encodeURIComponent((req.query.sourceurl || '/personal'))
  console.log("mmm----------", redirectUrl)
  console.log('/oauth2/snsapi_base', hospitalId, redirectUrl)

  res.redirect('https://open.weixin.qq.com/connect/oauth2/authorize?' +
    'appid=' + "wxf1a4bbd24d59f858" +
    '&redirect_uri=' + encodeURIComponent(redirectUrl) +
    '&response_type=code' +
    '&scope=snsapi_base' +
    '&state=' + hospitalId +
    '#wechat_redirect'
  )
})

router.get('/oauth2/snsapi_base_cb', async function (req, res, next) {
  const hospitalId = req.session.hospitalId
  const wxConfig = config.wxAppidList[hospitalId]
  res.cookie("qqq","jjj")
  console.log('/oauth2/snsapi_base_cb', hospitalId, req.query.code, wxConfig)

  const { data } = await axios.get('https://api.weixin.qq.com/sns/oauth2/access_token', {
    params: {
      appid: wxConfig.appId,
      secret: wxConfig.appSecret,
      code: req.query.code,
      grant_type: 'authorization_code'
    }
  })
  res.cookie('openid', data.openid)
 
})

这种是静默受权的方式,换成弹框的把scope改为snsapi_userinfocookie

相关文章
相关标签/搜索