收藏
回答

体验版为什么和工具运行,真机运行效果不一样呢?

//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:的原因吧? 另外用打开调试的方式不知道为什么每次点登陆进去后,再重新打开,又提示登陆。在工具运行可不是这样的,第一次进来会提示登录,第二次不清除缓存就直接进入了下一页了,不知道是什么原因。

最后一次编辑于  2019-08-28
回答关注问题邀请回答
收藏

2 个回答

  • 全赖有你
    全赖有你
    2019-08-28

    我在工具里设置了不校验域名。另外我还发现有个问题,在工具里我看代码的执行逻辑:第一次加载也就是没有缓存的情况下,登陆页执行onload 里面的会走点完登陆后进入下一页,我在页面上按一下ctrl+s,页面重新启动,发现走的是这段,和想象 一样,进入下一页。可是上传体验版用微信扫描二维码后发现出现登陆按钮,我点一下,可以正常进入下一页,我退出再入体验版,打开调试看到他竟然还是走的
    这一段,这一段因为没有写wx.switchTab({url:})这个代码,页面等于还停在这里,你知道是什么原因吗?

    2019-08-28
    赞同
    回复
  • จุ๊บ
    จุ๊บ
    2019-08-28

    应该就是http问题,体验版(打开调试或者https)和正式版(必须是https)其它方式可以不校验域名

    2019-08-28
    赞同
    回复
登录 后发表内容
问题标签