之前wx.getUserInfo寫在app.js中,為了盡量減少影響,加了一個登錄授權頁面tologin
wx.login({ success: function (r) { var code = r.code;//登錄憑證 if (code) { //2、調用獲取用戶信息接口 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.js
//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
