以前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服務器