uniapp小程序的授权描述
1、微信小程序通过uni.login()方法可以获取到微信提供的code
2、通过登录获取的code码可以以获取用户唯一标识openid以及会话密钥sessionkey用于解密获取手机的加密信息
3、通过微信提供的获取微信手机号的方法getphonenumber拿到encryptedData iv两个字段的内容
4、通过微信提供的解密方法:可以拿到最终的手机号
5、获取用户的头像,昵称等直接调用uni.getUserProfile()方法即可
1.使用微信小程序获取code
<view @click="hqCode">登录</view>
hqCode(){ // 获取登录凭证
uni.login({
provider: 'weixin',
success: res => {
console.log(res)
}
});
}
正常返回内容如下:
<view class="" @click="hqJMXX">获取密钥sessionkey</view>
hqJMXX(){ // 获取密钥 === 需要登录才可以获取密钥
uni.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',// 请求微信服务器
method:'GET',
data: {
appid: '这里是你的小程序aphid', //你的小程序的APPID
secret: '这里是你小程序生成的密钥', //你的小程序秘钥secret,
js_code: '第一步登录拿到的code', //wx.login 登录成功后的code
grant_type:'authorization_code' //此处为固定值
},
success: (res) => {
console.log('获取信息',res);
}
});
},
下面是正确返回值
<button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">获取电话</button>
getPhoneNumber(res){ // 获取手机号
console.log(res)
this.phone_code = res.detail.code // 获得的手机code
this.phone_encryptedData = res.detail.encryptedData //用于解密
this.phone_iv = res.detail.iv // 用于解密
},
返回值如下:
<view @click="jiemi">点击解密</view>
import WXBizDataCrypt from "@/static/wx/WXBizDataCrypt.js" // 需要引入
jiemi(){ // 解密需要appid 会话密钥;然后需要手机号的加密字段
let pc = new WXBizDataCrypt('这里是appid',this.session_key);
let data = pc.decryptData(this.phone_encryptedData , this.phone_iv);
console.log(data) //data就是最终解密的用户信息
this.phone = data.phoneNumber // 手机号
}
下面是返回值:
<view class="" @click="get_user">获取用户信息</view>
get_user(){ // 获取用户信息
uni.getUserProfile({
desc: '用户登录',
success: res => {
console.log(res)// 用户的信息
this.user_img = res.userInfo.avatarUrl //微信头像
this.user_name = res.userInfo.nickName // 微信昵称
}
})
},
下面是获取用户得返回值: