uniapp 微信授权获取用户信息和手机号

在uniapp中获取微信用户信息和手机号码可以使用微信开发者工具提供的API,需要先在工具中进行相关配置,具体步骤如下:

  1. 在微信开发者工具中打开项目,进入项目根目录下的manifest.json文件,添加如下代码:
"mp-weixin": {
    "appid": "wx****",
    "oauth": {
        "scope": "snsapi_userinfo",
        "responseType": "code"
    }
}

其中,wx****为你自己的appid,snsapi_userinfo表示要获取用户信息授权,如果需要获取手机号码授权,则需要设置为snsapi_base

  1. 在需要获取用户信息或手机号码的页面中,编写如下代码:
// 获取用户信息
uni.getUserInfo({
  provider: 'weixin',
  success: function (res) {
    console.log('获取用户信息成功:' + JSON.stringify(res.userInfo));
  },
  fail: function (err) {
    console.log('获取用户信息失败:' + JSON.stringify(err));
  }
})

// 获取手机号码
uni.login({
  provider: 'weixin',
  success: function (loginRes) {
    uni.request({
      url: 'https://api.weixin.qq.com/sns/jscode2session',
      data: {
        appid: 'wx****',
        secret: '****',
        js_code: loginRes.code,
        grant_type: 'authorization_code'
      },
      success: function (res) {
        console.log('code2session返回code:' + JSON.stringify(res));
        uni.getUserInfo({
          provider: 'weixin',
          success: function (infoRes) {
            console.log('获取用户信息成功:' + JSON.stringify(infoRes.userInfo));
            uni.request({
              url: 'https://api.weixin.qq.com/sns/userinfo',
              data: {
                access_token: res.access_token,
                openid: res.openid,
                lang: 'zh_CN'
              },
              success: function (phoneRes) {
                console.log('获取手机号码成功:' + JSON.stringify(phoneRes));
              },
              fail: function (phoneErr) {
                console.log('获取手机号码失败:' + JSON.stringify(phoneErr));
              }
            })
          },
          fail: function (infoErr) {
            console.log('获取用户信息失败:' + JSON.stringify(infoErr));
          }
        })
      },
      fail: function (res) {
        console.log('code2session失败,错误码为:' + res.errMsg);
      }
    })
  },
  fail: function (loginErr) {
    console.log('微信登录失败:' + JSON.stringify(loginErr));
  }
})

需要注意的是,获取用户信息和手机号码的方法都需要在微信登录成功后才能调用,因此需要先调用uni.login方法进行登录。同时,在获取手机号码时,需要先调用微信提供的code2session API获取session_key和openid,再用这两个参数去获取手机号码。

你可能感兴趣的:(uni-app,微信,前端)