微信小程序登录及授权获取手机号
一、遇到的问题 1、获取手机号授权时报错:getPhoneNumber:fail no permission
2、流程 1)登录拿session并保存
var that = this wx.login({ success: async function (res) { const res2 = await loginStart({ method: "POST", query: { code:res.code }, headerType: "application/json", }); var sessions = res2.datas.sessionKey that.setData({ sessionkey:sessions }) }})
2)授权拿手机号
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号</button>
async getPhoneNumber(e){ var phone = this.decryptData(this.data.sessionkey,e.detail.encryptedData,e.detail.iv) // 用获取的手机号来进行其他操作 const res2 = await loginGet({ method: "get", suffix:?phone=+phone.phoneNumber, query: {}, headerType: "application/json", }); this.setData({ position:res2.datas. position, shopAddr:res2.datas.shopAddr, shopName:res2.datas.shopName, userId:res2.datas.userId, userName:res2.datas.userName }) },
3)解码
import CryptoJS from crypto-js import {Base64} from js-base64 decryptData(sessionKey, encryptedData, iv) { let key = CryptoJS.enc.Base64.parse(sessionKey) let ivv = CryptoJS.enc.Base64.parse(iv) let decrypt = CryptoJS.AES.decrypt(encryptedData, key, { iv: ivv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }) return JSON.parse(Base64.decode(CryptoJS.enc.Base64.stringify(decrypt))) },
用到的两个包引入 在终端里安装: npm install crypto-js npm install js-base64
另外,也可以把参数传给后端解析(sessionKey, encryptedData, iv))
上一篇:
uniapp开发微信小程序-2.页面制作
下一篇:
邂逅我的第一个小程序