官网链接(http://mp.weixin.qq.com/debug/wxadoc/dev/api/)
wx.login(Object object)
调用接口获取登录凭证(code)。通过凭证进而换取用户登录态信息,包括用户的唯一标识(openid)及本次登录的会话密钥(session_key)等。用户数据的加解密通讯需要依赖会话密钥完成。
微信自定义登陆
app.js
通过wx.login,使用 code 换取 openid 和 session_key 等信息
//小程序生命周期()
onLaunch: function() {
// 登录
wx.login({
success: res => {
wx.request({
url: 'htttps:*****/login/getOpenid',
data: {
code: res.code
},
success: (data) => {
if (data.errMsg == 'request:ok') {
this.globalData.session = data.data;
} else {
wx.showModal({
title: '请求错误',
content: '错误:未获取到openid',
showCancel: false
})
}
},
fail: (ress) => {
wx.showModal({
title: '请求错误',
content: '接口错误:getOpenid',
showCancel: false
})
}
})
}
})
}
login.wxml
//用来获取用户信息
<button open-type="getUserInfo" bindgetuserinfo="getUserInfo" ></button>
//用来获取用户手机号(有企业限制)
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>
login.js
page({
data: {
authSetting: false
},
/**获取用户信息**/
getUserInfo: function (e) {
},
/**获取手机号**/
getPhoneNumber: function(e) {
}
// 调取微信(自动)登陆
setPhoneNumber: function(det) {
wx.request({
url: 'https:*****/login/Number',
data: {
sessionKey: app.globalData.session.session_key,
encryptedData: det.encryptedData,
iv: det.iv
},
success: (data1) => {
this.login(updata, '/index.php/minapi/login/userLogin')
} else {
}
},
fail: (res) => {
}
})
},
/** 登录 **/
login: function(dat, loginUrl, role) {
wx.request({
url: this.data.config + loginUrl,
data: dat,
success: (data) => {
},
fail: (res) => {
}
})
},
获取手机号链接(有限制):https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html
接口演示
-
通过code去获取 openid 和 session_key
获取用户信息
获取手机号返回相对应参数(encryptedData与iv),此刻为加密数据,发送下请求进行解密为json
-
发送登陆请求