我在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个小时。。。。。
app.onLaunch和首页的onLoad是异步执行的。首页onLoad的时候可能请求还没成功,所以
typeof
(snsInfo.data.unionid) 会报这个错误
我是想解决报错的问题,因为很多客户端因为这个错误无法跳转到授权界面!
谢谢!
这样就算授权了,也获取不到unionid,和授权无关吧?
授权的会在其他页面解决,就是想解决那个报错后无法跳转的问题!