[求助] 小程序里怎么把获取 openid,给封装起来调用

2020-03-27 12:51:37 +08:00
 kukala

怎么把如下的获取 openid,给封装起来调用

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”
2053 次点击
所在节点    微信
6 条回复
airyland
2020-03-27 14:09:00 +08:00
理解下异步,封装成 promise
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));
kukala
2020-03-27 17:05:18 +08:00
@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));
}
}
}```
uchihaObito
2020-03-27 17:40:44 +08:00
@kukala 这样不行,改下逻辑,必须授权登录拿到 openid 了才可以分享,做个分享按钮的显示隐藏,而且为了安全不应该传 userId 么。
uchihaObito
2020-03-27 17:41:25 +08:00
@kukala 不知道你的需求是什么
kukala
2020-03-27 20:53:49 +08:00
@uchihaObito
只是举个例子,实际情况是把用户的 ID 赋值给到 onShareAppMessage()里的 path 去,但是不知道怎么给他赋值

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/656744

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX