获取unionid的一个困惑
发布于 6 年前 作者 chenmin 6468 次浏览 来自 问答

我在app.js的

onLaunch中通过

wx.request({
            url: 'https://www.XXXX.XX/api/Minipro/sns',
            data: {
              code: res.code
            },
            success: function (res) {
 
              wx.setStorageSync('snsInfo', res)
               
               
            }
          })

获取了微信用户的信息,并写入到snsInfo的Storage中。

接着在页面的

onLoad中判断snsInfo是否有unionid

snsInfo = wx.getStorageSync('snsInfo')
    //snsInfo = wx.getStorageSync('snsInfo')
    //判断是否包含unionid,如果没有则跳转页面通过getUserInfo获取
     
    if (typeof (snsInfo.data.unionid)=="undefined" ) {
      console.log("=========无法获取unionid==============")
      wx.navigateTo({
        url: '/pages/index/userInfo',
      })
      return
    }

如果没有unionid,则需要跳转到userInfo的页面去授权获取。

现在的问题是部分手机可以,部分手机无法正确跳转到授权界面。运维后台提示:

undefined is not an object (evaluating '(e=wx.getStorageSync("snsInfo")).data.unionid');at pages/index/index page lifeCycleMethod onLoad function

这个问题如何解决?调试不是很方便,普通用户调试只能通过正式版本测试,发布一个版本需要3个小时。。。。。

3 回复

app.onLaunch和首页的onLoad是异步执行的。首页onLoad的时候可能请求还没成功,所以typeof (snsInfo.data.unionid) 会报这个错误

这样就算授权了,也获取不到unionid,和授权无关吧?

我是想解决报错的问题,因为很多客户端因为这个错误无法跳转到授权界面!

谢谢!

回到顶部