微信小程序获取微信OpenId详解及实例代码
什么是OpenId
OpenId 是微信为了方便第三方平台用户登录而提供的一种账号体系,每个微信用户都有一个唯一对应的OpenId。
获取OpenId的流程
步骤一:获取 Code
通过微信官方的 login 接口,用户可以在小程序内部完成登录操作,获得 code
。
wx.login({
success: res => {
console.log(res.code) // 通过res.code获取到code
},
fail: err => {
console.log(err)
}
})
步骤二:通过Code获取SessionKey和OpenId
通过微信提供的服务器接口,我们可以通过上一步获取到的 code
来获取 session_key
和 openid
。
wx.request({
url: 'https://yourhost.com/api/getOpenId',
data: {
code: res.code // 注意,这里的res.code是上一步wx.login返回的code
},
success: res => {
console.log(res.data)
const { openid, session_key } = res.data // 通过res.data获取到openid和session_key
},
fail: err => {
console.log(err)
}
})
以上就是获取 OpenId
的流程。需要注意的是,在实际的应用场景中,我们需要将获取到的 session_key
和 openid
存储在服务器中,以便后续的使用。
实例
示例一
下面提供一个基于 uni-app
的实例代码,用于展示如何在小程序中获取 openid
。
export async function getOpenId() {
const { code } = await wx.login() // 获取code
const { data } = await wx.cloud.callFunction({ // 调用云函数
name: 'getOpenId',
data: { code } // 将获取的code作为参数传递给云函数
})
return data
}
示例二
下面提供一个基于 express
+ axios
的实例代码,用于展示如何在后端服务器中获取 openid
。
const axios = require('axios')
router.post('/', async (req, res) => {
const { code } = req.body // 获取前端提交的code
const { data } = await axios.get(`https://api.weixin.qq.com/sns/jscode2session?appid=${APPID}&secret=${APPSECRET}&js_code=${code}&grant_type=authorization_code`) // 通过code向微信服务器请求openid
res.send(data)
})
其中,APPID 和 APPSECRET 分别为在微信公众平台上申请的应用ID和密钥,需要替换为自己的APPID和APPSECRET。
以上就是两个实例代码,其中前者用于小程序端获取 openid
,后者用于后端服务器获取 openid
。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:微信小程序 获取微信OpenId详解及实例代码 - Python技术站