返回
小程序开发-3用户openid的获取方式简述
前端
2023-10-27 12:12:40
获取用户openid的方式,大致可以分为小程序端和云开发端两种方式。
1. 小程序端获取用户openid
1.1 直接调用wx.login获取临时登录凭证code
wx.login({
success: res => {
if (res.code) {
// 发送res.code到后台服务器以换取openid和session_key
wx.request({
url: 'https://example.com/api/v1/auth/login',
method: 'POST',
data: {
code: res.code
},
success: res => {
// 将openid和session_key存储在本地或数据库中
const openid = res.data.openid
const sessionKey = res.data.session_key
}
})
} else {
console.log('获取用户登录凭证失败!' + res.errMsg)
}
}
})
1.2 使用wx.getUserInfo获取用户基本信息
wx.getUserInfo({
success: res => {
// 发送res.code和encryptedData到后台服务器以换取openid和session_key
wx.request({
url: 'https://example.com/api/v1/auth/login',
method: 'POST',
data: {
code: res.code,
encryptedData: res.encryptedData,
iv: res.iv
},
success: res => {
// 将openid和session_key存储在本地或数据库中
const openid = res.data.openid
const sessionKey = res.data.session_key
}
})
}
})
2. 云开发端获取用户openid
2.1 使用云开发提供的wx.cloud.login()获取用户登录凭证code
wx.cloud.login({
success: res => {
// 发送res.code到云开发服务器以换取openid和session_key
wx.cloud.callFunction({
name: 'login',
data: {
code: res.code
},
success: res => {
// 将openid和session_key存储在本地或数据库中
const openid = res.result.openid
const sessionKey = res.result.session_key
}
})
}
})
2.2 使用云开发提供的wx.cloud.database().collection('user').doc(userId).get()获取用户信息
wx.cloud.database().collection('user').doc(userId).get({
success: res => {
// 将openid存储在本地或数据库中
const openid = res.data.openid
}
})
3. 注意事项
- 使用云开发获取用户openid需要将小程序与云开发环境关联,并且需要在云开发控制台开通用户管理服务。
- 小程序端获取用户openid需要在小程序后台配置业务域名和js安全域名。
- 获取用户openid时需要用户授权,因此在调用wx.login()和wx.getUserInfo()方法前需要先调用wx.authorize()方法授权。
- openid的有效期为30天,如果用户30天内没有重新登录小程序,则需要重新获取openid。