微信小程序 微信授权登录 获取openid和unionid、session_key

微信授权登录这块,一开始我是研究半天,后来并没用用到,本来想前端获取openid和unionid的,但是后来选择了走后台获取了,但是也是研究半天,决定写下来记录一下,方便大家参考
微信授权的话,首先说,得给用户制造一个自己手动触发授权的环境,所以先搭建一个页面,简简单单的

授权页面

按钮这块的open-type需要是getUserInfo

<button type='primary' open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="bindGetUserInfo">
        授权登录
</button>

到这儿的时候一定要梳理清晰你要的是哪些数据,还有这些数据要通过哪种方式去获得和需要的参数

  • 用户授权后,需要知道用户是否授权成功,通过wx.getSetting查看是否成功

  • 成功的话,通过wx.login获取用户的code,因为获取openid和unionid需要用code

  • 然后最后就是通过微信的auth.code2Session获取我们最终想要的

获取openid和unionid、session_key

/**
  * @name      获取用户信息
  * @date      2021-02-20
  */
  bindGetUserInfo(e) {
    
    
    // 获取用户授权
    wx.getSetting({
    
    
      success: (res) => {
    
    
      //判断是否授权成功
        if (res.authSetting['scope.userInfo']) {
    
    
              wx.login({
    
    
                success: (rest) => {
    
    
                //用户的code
                  let userCode = rest.code
                  wx.request({
    
    
                    // 自行补上自己的 APPID 和 SECRET
                   url:`https://api.weixin.qq.com/sns/jscode2session?appid=自己的appid&secret=密钥&js_code=${
      
      userCode}&grant_type=authorization_code`,
                    success: res => {
    
    
                      // 获取到用户的 openid
                      console.log("用户的openid:" + res.data.openid);
                      console.log("用户的unionid:" + res.data.unionid);
                      console.log("用户的session_key:" + res.session_key);
                    },
                    fail(e){
    
    
                      wx.showToast({
    
    
                        title: '获取失败',
                        icon: 'none'
                      });
                    },
                  });
                }
              })
        } else {
    
    
          wx.showToast({
    
    
            title: '请确认授权',
            icon: 'none'
          });
        }
      }
    });
  },

tips:获取unionid的话是需要微信开放平台绑定小程序的,不然是不可能获取到的

查找 APPID 和 SECRET

微信公众平台->开发->开发管理->开发设置
开发设置

auth.code2Session

比较简单,大家可以自行查看 link

在调这个接口的时候,一开始总是提示我code无效 40029,找了半天是因为创建项目用的appid和接口参数的appid不一样,希望大家写的时候注意

这样就能获取到我们想要的数据啦

猜你喜欢

转载自blog.csdn.net/glorious_future/article/details/113928975