//index1.js //获取应用实例 const app = getApp() Page({ data: { motto: '' , userInfo: {}, projectName: app.globalData.projectName, domain:app.globalData.domain, hasUserInfo: false , canIUse: wx.canIUse( 'button.open-type.getUserInfo' ) }, //事件处理函数 bindViewTap: function () { wx.navigateTo({ url: '../logs/logs' }) }, onLoad: function () { if (app.globalData.userInfo) { this .setData({ userInfo: app.globalData.userInfo, hasUserInfo: true }) console.log(app.globalData.userInfo+ "vvv" ); wx.switchTab({ url: "/pages/index/selectmeal" }); } else if ( this .data.canIUse){ console.log( this .data.canIUse + "vqqq" ) // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 // 所以此处加入 callback 以防止这种情况 app.userInfoReadyCallback = res => { this .setData({ userInfo: res.userInfo, hasUserInfo: true }); } } else { // 在没有 open-type=getUserInfo 版本的兼容处理 wx.getUserInfo({ success: res => { app.globalData.userInfo = res.userInfo this .setData({ userInfo: res.userInfo, hasUserInfo: true }) } })} }, login: function (e) { wx.login({ success: res => { // 获取到用户的 code 之后:res.code console.log( "用户的code:" + res.code); console.log( "用户的code:" + e.detail); if (res.code) { var encryptedData = e.detail.encryptedData; var iv = e.detail.iv; var signature = e.detail.signature; wx.request({ url: this .data.domain+ '/home/TestGetNick' , data: { code: res.code, encryptedData: encryptedData, iv: iv, signature: signature }, success:kes=>{ if (kes.data.code== "0" ) { var _sessionKey = kes.data.dataObj; wx.setStorageSync( '_sessionKey' , _sessionKey); console.log( "loginsucess" ); wx.switchTab({ url: "/pages/index/selectmeal" }); } else { wx.showToast({ title: '登陆失败请重新登录' , icon: 'succes' , duration: 2000, mask: true }) console.log(kes.code+ " " +kes.msg); } } }) } else { console.log(res); } } }); }, getUserInfo: function (e) { console.log(e) app.globalData.userInfo = e.detail.userInfo this .setData({ userInfo: e.detail.userInfo, hasUserInfo: true }) } }) |
<!--index1.wxml--> < view class = "container" > < view class = "userinfo" > < button wx:if = "{{!hasUserInfo && canIUse}}" open-type = "getUserInfo" bindgetuserinfo = "login" > 登陆 </ button > < block wx:else> < image bindtap = "bindViewTap" class = "userinfo-avatar" src = "{{userInfo.avatarUrl}}" mode = "cover" ></ image > < text class = "userinfo-nickname" >{{userInfo.nickName}}</ text > </ block > </ view > < view class = "usermotto" > < text class = "user-motto" >{{motto}}</ text > </ view > </ view > |
我的后台代码是在阿里云服务器上,没有绑定域名,只有IP,这就是我访问后台网站是通过ip的,在微信小程序工具,真机里运行都基本正常。上传为体验版后,扫描二维码运行,就发现不打开调试就不能看数据。这个应该是我写的是http:的原因吧? 另外用打开调试的方式不知道为什么每次点登陆进去后,再重新打开,又提示登陆。在工具运行可不是这样的,第一次进来会提示登录,第二次不清除缓存就直接进入了下一页了,不知道是什么原因。
我在工具里设置了不校验域名。另外我还发现有个问题,在工具里我看代码的执行逻辑:第一次加载也就是没有缓存的情况下,登陆页执行onload 里面的会走点完登陆后进入下一页,我在页面上按一下ctrl+s,页面重新启动,发现走的是这段,和想象 一样,进入下一页。可是上传体验版用微信扫描二维码后发现出现登陆按钮,我点一下,可以正常进入下一页,我退出再入体验版,打开调试看到他竟然还是走的
这一段,这一段因为没有写wx.switchTab({url:})这个代码,页面等于还停在这里,你知道是什么原因吗?
应该就是http问题,体验版(打开调试或者https)和正式版(必须是https)其它方式可以不校验域名