社群的魏总问我,怎么去取用户的微信小程序的唯一ID,昨天也给他解答了。今天把这个答案沉淀下来。于是有了这篇。
这个唯一ID,我们一般叫openid,是唯一标定用户身份的,每个微信在这个小程序中是唯一的。
要获取到用户的OPENID,要通过一个叫wx.login获取到code,然后拿 这个code去找VFP后端换openid
来看津津有味的代码。
首先来获取code
wx.login({
success: res => {
console.log(res);
wx.request({
url:'ctl_login.fsp?proc=getopenid',
method: "GET",
data: {
jscode: res.code,
sysinfo: JSON.stringify(sysinfo2)
},
success: function (res) {
console.log(res);
if (res.data.errno && res.data.errno != 0) {
reject(res.data.errmsg);
}
that.globalData.openid = res.data.openid;
},
fail: function (err) {
wx.showModal({
title: '加菲猫的VFP',
content: err.errMsg,
showCancel:false
})
}
})
}, fail: err => {
wx.showModal({
title: '加菲猫的VFP',
content: err.errMsg,
showCancel: false
})
VFP后端怎么拿呢?
Define Class ctl_login As Session
Procedure getOpenid
PRIVATE csysinfo,cplatform,unionid,oReturn
cJSCODE=httpqueryparams("jscode")
csysinfo=httpqueryparams("sysinfo",This.iconnid)
oWXAPI=Newobject("weixinApi","weixinApi.prg")
oWXAPI.APPid="" &&你的appid
oWXAPI.SECRET="" &&你的secret
oFrmMain.log("开始获取OPENID")
oReturn=oWXAPI.getopenid(cJSCODE) &&这样转换有没有必要,多个值用对象?
IF ISNULL(oReturn)
ERROR oWXAPI.msg
ENDIF
unionid=oReturn.unionid
TEXT TO cReturn NOSHOW TEXTMERGE PRETEXT 1+2
{"openid":"<<oReturn.openid>>"}
ENDTEXT
Return cReturn
ENDPROC
ENDDEFINE
猫框已经封装好了,直接拿来用就好啦。
另外,openid 与token 可以同时用ctl_login返回的。
下一篇教怎么拿手机号!