以前wx.getUserInfo写在app.js中,为了尽可能减小影响,加了一个登陆受权页面tologinhtml
wx.login({ success: function (r) { var code = r.code;//登陆凭证 if (code) { //二、调用获取用户信息接口 wx.getUserInfo({ success: function (res) { //console.log("小程序res") //console.log(res) var userInfo = res.userInfo; //console.log("用户信息") //console.log(userInfo) var timeStamp = Date.parse(new Date()) / 1000; var nickName = userInfo.nickName; var gender = userInfo.gender; var avatarUrl = userInfo.avatarUrl; var country = userInfo.country; var province = userInfo.province; var city = userInfo.city; var param = { code: code, nickname: nickName, logo: avatarUrl} var paramsToSign = "appId=101605¶m=" + JSON.stringify(param) + "&version=1.0.0&timeStamp=" + timeStamp +"&key=b0bb9ac9bfcfd46d3ec19acb63118e9b"; var sign = md5(paramsToSign).toLocaleUpperCase(); //3.请求本身的服务器,解密用户信息 获取unionId等加密信息 wx.request({ url: app.globalData.openUrl + 'api/register/wechatLogin',//本身的服务接口地址 method: 'post', header: { 'content-type': 'application/x-www-form-urlencoded' }, data: { appId: "101605", version: "1.0.0", timeStamp: timeStamp, param: JSON.stringify(param),sign: sign}, success: function (d) { //console.log("服务器解析后返回的信息") //console.log(d) //4.解密成功后 获取本身服务器返回的结果 if (d.data.code == "000") { var userInfoToStorage = d.data.data; wx.setStorageSync('unionid', userInfoToStorage.unionid); wx.setStorageSync('openid', userInfoToStorage.openid); wx.setStorageSync("token", userInfoToStorage.token); if (gender == "0"){ wx.setStorageSync('gender', "女"); }else{ wx.setStorageSync('gender', "男"); } wx.setStorageSync('nickName', nickName); wx.setStorageSync('city', city); wx.setStorageSync('avatarUrl', avatarUrl); } else { console.log('解密失败'); } }, fail: function () { console.log('系统错误') } }) }, fail: function () { console.log('获取用户信息失败') //获取用户信息失败后。请跳转受权页面 wx.showModal({ title: '警告', content: '还没有进行受权,请点击肯定跳转到受权页面进行受权。', success: function (res) { if (res.confirm) { console.log('用户点击肯定') wx.navigateTo({ url: '../tologin/tologin', }) } } }) } }) } else { console.log('获取用户登陆态失败!' + r.errMsg) } }, fail: function () { console.log('登录失败') } })
tologin.wxml小程序
<view class="image-div"> <image src='../../utils/logo.jpg' ></image> <button class='btn_yzm' type="primary" open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo" size="{{primarySize}}" loading="{{loading}}" plain="{{plain}}" disabled="{{disabled}}" bindtap="primary"> 受权登陆 </button> </view>
tologin.jsapi
//index.js //获取应用实例../.. const app = getApp() var that; Page({ data: { motto: 'Hello World', showModal: false, userInfo: {}, hasUserInfo: false, canIUse: wx.canIUse('button.open-type.getUserInfo') }, bindGetUserInfo: function (e) { var that = this; wx.getSetting({ success: function (res) { if (res.authSetting['scope.userInfo']) { wx.getUserInfo({ success: function (res) { //console.log("小程序res") //console.log(res) var userInfo = res.userInfo; //console.log("用户信息") //console.log(userInfo) var timeStamp = Date.parse(new Date()) / 1000; var nickName = userInfo.nickName; var gender = userInfo.gender; var avatarUrl = userInfo.avatarUrl; var country = userInfo.country; var province = userInfo.province; var city = userInfo.city; var param = { code: code, nickname: nickName, logo: avatarUrl } var paramsToSign = "appId=101605¶m=" + JSON.stringify(param) + "&version=1.0.0&timeStamp=" + timeStamp + "&key=b0bb9ac9bfcfd46d3ec19acb63118e9b"; var sign = md5(paramsToSign).toLocaleUpperCase(); //3.请求本身的服务器,解密用户信息 获取unionId等加密信息 wx.request({ url: app.globalData.openUrl + 'api/register/wechatLogin',//本身的服务接口地址 method: 'post', header: { 'content-type': 'application/x-www-form-urlencoded' }, data: { appId: "101605", version: "1.0.0", timeStamp: timeStamp, param: JSON.stringify(param), sign: sign }, success: function (d) { //console.log("服务器解析后返回的信息") //console.log(d) //4.解密成功后 获取本身服务器返回的结果 if (d.data.code == "000") { var userInfoToStorage = d.data.data; wx.setStorageSync('unionid', userInfoToStorage.unionid); wx.setStorageSync('openid', userInfoToStorage.openid); wx.setStorageSync("token", userInfoToStorage.token); if (gender == "0") { wx.setStorageSync('gender', "女"); } else { wx.setStorageSync('gender', "男"); } wx.setStorageSync('nickName', nickName); wx.setStorageSync('city', city); wx.setStorageSync('avatarUrl', avatarUrl); } else { console.log('解密失败'); } }, fail: function () { console.log('系统错误') } }) }, fail: function () { console.log('获取用户信息失败') //获取用户信息失败后。请跳转受权页面 wx.showModal({ title: '警告', content: '还没有进行受权,请点击肯定跳转到受权页面进行受权。', success: function (res) { if (res.confirm) { console.log('用户点击肯定') wx.navigateTo({ url: '../tologin/tologin', }) } } }) } }) } } }) //最后,记得返回刚才的页面 wx.navigateBack({ delta: 1 }) } })
ok服务器