微信小程序授权登录(含获取基本信息及绑定的手机号)

简介: 微信小程序授权登录(含获取基本信息及绑定的手机号)

1、授权获取微信个人信息

wx.getUserProfile({
  desc: '展示用户信息',
  success: (res) => {
    this.setData({
      nickName: res.userInfo.nickName,
      avatarUrl: res.userInfo.avatarUrl
    })
  },
  fail: res => {
    wx.showToast({
      title: '您已拒绝授权,请重新点击并授权',
      icon:'none'
    })
  }
})

2、调用wx.login()获取临时登录凭证code

wx.login({
    success: res => {
       this.setData({
          jsCode: res.code
       })
  }
})

3、用code调用接口换取用户唯一标识openId、用户在微信开放平台账号下的唯一标识unionId和会话密钥session_key
(1)前端获取

wx.request({
//微信开发者工具勾选-不校验合法域名
    url: 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appId + '&secret=' + secret + '&js_code=' + code + '&grant_type=authorization_code',
    data:{},
    header:{
      'content-type':'json'
    },
    success:function(res) {
      console.log(res);
    }
})

注意点:正常开发中不会通过这种方法获取,会通过后台获取调用微信公众平台接口获取openid,为了保护一些敏感信息如appid,secret密钥不被泄露。前端可以用来在测试中使用从而达到效果。
(2)调用后台接口获取

getOpenId({jsCode:this.data.jsCode}).then(res => {
  if (res.data.code === 1) {
    this.setData({
       openid: res.data.data.openid,
       sessionKey: res.data.data.sessionKey,
       unionid: res.data.data.unionid
     })
  }
})

4、授权获取手机号
(1)使用button按钮触发授权弹窗

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号码</button>
getPhoneNumber(e){
    console.log(e.detail.iv);//加密算法的初始向量
    console.log(e.detail.encryptedData);//完整用户信息的加密数据
    console.log(e.detail.code);//手机号获取凭证
}

(2)通过参数encryptedDataivsessionKey或者是codesessionKey请求后端接口,后端进行解密然后返回用户手机号
注意:如果通过code来获取,用微信开发者工具测试的时候,可能会显示不出code,这是调试基础库的原因,在真机调试上不会出现问题。本地调试的时候将调式基础库修改为2.22.1版本即可。
在这里插入图片描述
5、绑定微信
只需授权然后使用获取的openidunionidsessionKey调用后端接口

wx.getUserProfile({
  desc: '展示用户信息',
  success: (res) => {
    let data = {}
    data.openid = this.data.openid
    data.unionid = this.data.unionid
    data.sessionKey = this.data.sessionKey
    miniBind(data).then(res => {
      if (res.data.code === 1) {
        wx.showToast({
          title: '授权成功!'
        }) 
      } else {
        wx.showToast({
          icon: "none",
          title: res.data.msg,
        })
      }
    })
  }
})
相关文章
|
17天前
|
小程序 前端开发 算法
|
30天前
Discuz! X3.5插件云诺-阿里云短信手机登录 会员登录后也无法查看附件图片的问题解决方法
Discuz! X3.5插件云诺-阿里云短信手机登录 会员登录后也无法查看附件图片的问题解决方法
36 2
|
1月前
|
移动开发 前端开发 Android开发
开发指南059-App实现微信扫描登录
App是用uniapp开发的,打包为apk,上传到安卓平板中使用
|
1月前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
547 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
1月前
|
小程序 JavaScript
微信小程序之input组件及其获取用户输入信息
微信小程序之input组件及其获取用户输入信息
54 1
|
1月前
|
小程序 算法 前端开发
微信小程序---授权登录
微信小程序---授权登录
75 0
|
1月前
|
小程序
如何将CCBUPT全能墙小程序添加到手机桌面
如何将CCBUPT全能墙小程序添加到手机桌面
30 0
|
3月前
【Azure 环境】中国区Azure B2C 是否支持手机验证码登录呢?
【Azure 环境】中国区Azure B2C 是否支持手机验证码登录呢?
|
5月前
|
网络协议 Android开发 数据安全/隐私保护
Android手机上使用Socks5全局代理-教程+软件
Android手机上使用Socks5全局代理-教程+软件
4685 2
|
6月前
|
监控 安全 Android开发
【新手必读】Airtest测试Android手机常见的设置问题
【新手必读】Airtest测试Android手机常见的设置问题
199 0