1,小程序的openid相当重要,它是用户的唯一标识id,牵扯的支付,登录,授权等!你可以理解为小程序的账号,小程序是获取不到你的微信号的,这个属于私密信息!只能获取用户的昵称,头像,openid,session_key等
下面就讲解一下我获取openid遇到的坑!
首先,获取openid,需要具备,AppID(小程序ID),AppSecret(小程序密钥) ,还有登录成功后返回给你的js_code
废话不多说,先看代码
wx.login({
success: res => {
console.log(res.code)//登录成功后获取js_code
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session?appid=' + app.globalData.appid + '&secret=' + app.globalData.secret + '&js_code=' + res.code + '&grant_type=authorization_code',//获取openid的url,请求微信服务器
data: {},
header: {
'content-type': 'application/json'
},
success: function(res) {
console.log("Openid为" + res.data.openid)
console.log("返回秘钥:" + res.data.session_key)//返回秘钥
app.globalData.openid = res.data.openid; //返回openid
//app.globalData.test="hello"
app.globalData.userInfo = e.detail.userInfo;
//授权成功后,跳转进入小程序首页
wx.redirectTo({
url: '../index/index'
})
}
})
}
});
app.globalData.appid,app.globalData.secret这是我获取app.js全局变量的值
App({
globalData: {
appid: 'wsfsfsfsf49c',//appid需自己提供,此处的appid我随机编写
secret: 'ffb6sfsfsfsfsfsc',//secret需自己提供,此处的secret我随机编写
openid: 0,
code:0,
userInfo: null,
test:"你好"
},
)}
是不是怎么看代码都没问题啊,获取openid需要的参数我都有,但是就打印出来openid为undefind,让我很恼火,
我把请求地址直接复制到浏览器也不行,返回错误提示,提示我code被重复使用,code只能使用一次的,并且code有效期只有5分钟
找了半天也没找到原因,没办法只有问老大了,经过一系列的排查,我才发现我犯了一个低级错误
我创建的这个小程序的时候这个APPID是我随机获取的,然后我用我小程序账号里的APPID试了试,麻蛋,发现真是这的问题(所以APPID必须要是小程序账号的id)
哈哈哈,问题解决只怪自己智商低啊