收藏
回答

获取unionid的一个困惑

我在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个小时。。。。。

最后一次编辑于  2018-09-21  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

3 个回答

  • undefined
    undefined
    2018-09-22

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

    2018-09-22
    赞同
    回复
  • 正楠
    正楠
    2018-09-21

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

    谢谢!

    2018-09-21
    赞同
    回复
  • 老张
    老张
    2018-09-21

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

    2018-09-21
    赞同
    回复 1
    • 正楠
      正楠
      2018-09-21

      授权的会在其他页面解决,就是想解决那个报错后无法跳转的问题!

      2018-09-21
      回复