wx.login({
success (res) {
if (res.code) {
//发起网络请求
wx.request({
url: 'https://test.com/onLogin',
data: {
code: res.code
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
//base.js
getOpenid(){
wx.login({
success (res) {
if (res.code) {
//发起网络请求
let postData = {
code: res.code
}
this.$post("https://test.com/onLogin",postData).then(res => {
return res.results.openid
})
}
}
})
},
//调用的时候
this.$base.getOpenid()
console.log 后
出来的“undefined”
1
airyland 2020-03-27 14:09:00 +08:00 via iPhone
理解下异步,封装成 promise
|
2
uchihaObito 2020-03-27 15:39:42 +08:00
getOpenid() {
return new Promise((resolve, reject) => { wx.login({ success: async res => { const { code } = res; if (!code) { return reject('登录失败!' + res.errMsg); } const { results: { openid } } = await this.$post('https://test.com/onLogin', { code }); resolve(openid); }, fail: err => { reject(err); } }); }); } //调用的时候 this.$base.getOpenid().then(openid => console.log(openid)); |
3
kukala OP @uchihaObito
感谢回复! 对于异步没接触过,有的地方还是有点不明白 比如:小程序的转发 通过 getOpenid,怎么赋值给 openid 就不知道了 ``` onShareAppMessage(option){ this.$base.getOpenid().then(openid => { console.log(openid) //这里可以显示 openid 的值 }).catch(err => { console.error(err) }) let title = this.detail.title let path = 'pages/index/index/scene='+ openid //怎么赋值到这个 openid 变量就不知道了 let imageUrl = this.detail.thumb return { title: title, path: path, imageUrl:imageUrl, success: function (res) { console.log("转发成功:" + JSON.stringify(res)); }, fail: function (res) { console.log("转发失败:" + JSON.stringify(res)); } } }``` |
4
uchihaObito 2020-03-27 17:40:44 +08:00
@kukala 这样不行,改下逻辑,必须授权登录拿到 openid 了才可以分享,做个分享按钮的显示隐藏,而且为了安全不应该传 userId 么。
|
5
uchihaObito 2020-03-27 17:41:25 +08:00
@kukala 不知道你的需求是什么
|
6
kukala OP @uchihaObito
只是举个例子,实际情况是把用户的 ID 赋值给到 onShareAppMessage()里的 path 去,但是不知道怎么给他赋值 |