赞
踩
步骤如下:
(1)小程序端调用 wx.login方法获取用户登录凭证code,将code发送给小程序后台服务器;服务器调用登录凭证校验接口(需要传参appid+appsecret+code),进而换取用户登录态信息,包括用户的唯一标识(openid)及本次登录的会话密钥(session_key)等,将这些信息存入缓存中。
// 官方实例如下: wx.login({ success (res) { if (res.code) { //发起网络请求 wx.request({ url: 'https://test.com/onLogin', data: { code: res.code } }) } else { console.log('登录失败!' + res.errMsg) } } })
注意
:
session_key会失效哦,多长时间失效微信不告诉你,可以通过wx.checkSession()方法校验用户当前session_key是否有效。
// 官方实例如下:
wx.checkSession({
success: function(){
//session_key 未过期,并且在本生命周期一直有效
},
fail: function(){
// session_key 已经失效,需要重新执行登录流程
wx.login() //重新登录
....
}
})
注意
:
现在微信很注重用户体验,getPhoneNumber方法需要用户主动去触发才能调用的
wxml代码片
.
// 官方实例如下:
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">授权获取</button>
js代码片
// 官方实例如下:
getPhoneNumber: function (e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv)
console.log(e.detail.encryptedData)
}
打印数据 console.log(e):
.
通过getPhoneNumber可以获取encryptedData,iv参数
注意
:
sessionKey不建议服务器返回给小程序端做逻辑处理,这里只做getPhoneNumber方法的讲解
getPhoneNumber: function (e) { console.log(e.detail.errMsg) //授权后的处理 if (e.detail.errMsg == "getPhoneNumber:ok") { //用户信息 let params = { encrypdata:e.detail.encryptedData, ivdata: e.detail.iv, sessionkey:this.data.userInfo.sessionKey } console.log('参数', params) //后端获取参数进行解密 Api.getPhoneNumber(params).then(datas => { console.log('手机号码',res) }) } }
打印返回结果 console.log(result):
.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。