Lucent's Blog

当时明月在 曾照彩云归

人生不相见,动如参与商。

6LCi5Y2O5qKFLOaIkeaDs+S9oOS6hg==


微信小程序获取用户UnionId

如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。

能够获取UnionID的前提是小程序已经绑定了开发者账号

微信开发平台绑定流程:

登录微信开放平台-->管理中心-->小程序-->绑定小程序

![](https://raw.githubusercontent.com/xhmily/imgbed/master/images/%7BK%7D%25%5DQII01DP%7DJZAWJKJ%7E(V.png)

1.需要用到的工具

cryptojs

将文件复制到小程序项目中

2.代码

const util = require('../utils/utils.js')
const WXBizDataCrypt = require('../utils/RdWXBizDataCrypt.js')
const getData = util.getData

login() {
    const that = this
    //在发起请求获取unionID之前必须先调用wx.login接口,因为需要用到session_key
    wx.login({
      success(res) {
        if (res.code) {
          //发起网络请求,调用后台的登录接口
          getData("auth/login",{
            jsCode:res.code
          },"POST").then(res=>{
  	 //后台用临时票据向微信服务器换取了用户openid和session_key,把session_key传回前端用来解密
            var pc = new WXBizDataCrypt('wxa1acc2c4af07a57b', res.data.sessionkey)
            wx.getUserInfo({
              success: function (res) {
                //拿到getUserInfo()取得的res.encryptedData, res.iv,调用decryptData()解密
                var data = pc.decryptData(res.encryptedData, res.iv)
                // data中就包含了openid和unionID,
                wx.setStorageSync('unionid', data.unionId)
                wx.setStorageSync('userInfo', data)
              }
            })
            if (res.msg =='success'){
              app.globalData.openid = res.res
              app.globalData.hasLogin = true
              wx.redirectTo({
                url: '/pages/start/start',
              })
            }else if(res.msg=='noAuth'){
              app.globalData.openid = res.res
              wx.redirectTo({
                url: '/pages/reg/reg',
              })
            }else{
              wx.showToast({
                title: '登录失败!',
                icon: 'none'
              })
            }
          })

这样即可获得用户的unionID,当然,前提是用户在授权时点了允许

上一篇

前提使用微信登录必须在微信开放平台注册并完成开发者认证,创建应用完成后即可使用微信登录接口登录后按如下进行创建:应用审核通过后即可查看appid在vue页面中使用微信内嵌二维码登录首先在index.html中引入:<scripttype='text/javascript'src="h…

阅读
下一篇

今天在使用element-ui的日期选择器的时候出现一个奇怪的问题,选中的日期在获取值之后会比选中的日期少一天:<el-date-pickerclass="mr10"v-model="selectedDate"type="daterange&q…

阅读