① 获取用户的openid和session_key
wx.login
调用接口获取登录凭证(code)。通过凭证进而换取用户登录态信息(openid,session_key等)
一般需要封装在工具类中方便后续调用(util.js)
function login () {
return new Promise((resolve, reject) => {
wx.login({
timeout: 10000,
success: (result) => {
resolve(result)
},
fail: (err) => {
reject(err)
},
complete: () => { }
});
})
}
在app.js中调用login方法
async getOpenId(){
const result = await login()
const code = result.code
//请求后端接口获取openid和session_key,存储在storage中
wx.setStorageSync('openId', openId)
wx.setStorageSync('sessionKey', sessionKey)
}
②微信授权登录
wxml页面:
<button bindgetphonenumber="getPhoneNumber" open-type="getPhoneNumber">微信授权一键登录</button>
// 获取手机号--一键登录
async getPhoneNumber(e) {
let that = this;
const openId = wx.getStorageSync('openId')
const {
iv,
encryptedData
} = e.detail
//检查登录状态是否过期
wx.checkSession({
success: async (result) => {
//session_key 未过期,并且在本生命周期一直有效
// 请求后端获取用户手机号(方法)
//获取用户信息(方法)
},
fail: async () => {
// session_key 已经失效,需要重新执行登录流程
//重新获取用户openId
await app.getOpenId()
// 请求后端获取用户手机号(方法)
//获取用户信息(方法)
},
complete: () => {}
});
},