在微信小程序里面,openid只能通过wx.login获取,如果在多个页面使用的话需要传递openid,比如说:
wx.navigateTo({
url: 'main/main?openid=' + openid
})
这样就能够传递openid,并在main里面使用了。
但是我发现如果在导航栏里面,就是app.json的tabbar里面,这里设置的导航页面,是没法传递的。所以我想要把openid放到缓存里面,这样就比较方便使用了。
首先是获取openid并放入缓存
wx.login({
success(res) {
if(res.code) {
//这里发起请求,发送给后台code换取openid
wx.request({
url: 'https://www.xxx.com',
data: {
code: res.code
}
success(res) {
openid: res.data.openid
//请求成功之后,把openid放到储存里面
wx.setStorage({
key: 'openid',
data: openid
})
}
})
}
}
})
通过wx.setStorage放入缓存。如果成功的话,点击控制台的Storage一栏能看到对应的key值,也就是openid和值。
然后在需要的页面,通过wx.getStorage就可以获取缓存里面的数据了。如:
//在set页面获取openid
data: {
openid: ''
},
onLoad: function(options) {
let that = this
wx.getStorage({
key: 'openid',
success(res) {
console.log(res.data)
that.setData({
openid: res.data
})
})
},
onReady: function() {
console.log(this.data.openid)
}
因为这个方法是异步的,所以需要在onLoad之后调用openid,如果在onLoad里面调用,会取不到值。