以下是微信小程序登录并获取用户信息(openid、session_key)的详细步骤:
前期准备
在微信公众平台注册小程序账号,获取 AppID 和 AppSecret。
登录微信公众平台,进入小程序后台,在 “开发” - “开发设置” 中配置服务器域名,确保后端服务器域名在微信合法域名列表中。
登录流程
获取临时登录凭证 code:在小程序中调用wx.login接口,向微信服务器发送请求获取临时登录凭证code。示例代码如下:
javascript
wx.login({
success(res) {
if (res.code) {
// res.code是微信返回的临时登录凭证,将其发送到后端服务器
} else {
console.log('登录失败!' + res.errmsg)
}
}
})
服务器端交换 openid 和 session_key:将code、小程序的appid和appsecret发送到后端服务器。服务器使用这些信息调用微信的jscode2session接口(如https://api.weixin.qq.com/sns/jscode2session),换取用户的openid和session_key。不同后端语言有不同的实现方式,以 Java 为例,可使用OkHttp等库发送请求。
验证签名和获取用户信息(可选):如果需要获取用户的详细信息(如昵称、头像等),可以调用wx.getUserProfile接口,但这需要用户授权。该接口需在页面产生点击事件后才可调用,每次请求都会弹出授权窗口,用户同意后返回用户信息。示例代码如下:
javascript
wx.getUserProfile({
desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中
success: (res) => {
// res.userInfo包含用户信息,如res.userInfo.nickName、res.userInfo.avatarUrl等
}
})
wx.getUserProfile返回的用户信息是明文,可直接获取使用,无需像旧版wx.getUserInfo那样通过session_key解密。
数据存储与使用
服务器处理用户信息:服务器获取到用户信息后,可以将其存储在数据库中,以openid作为用户的唯一标识。同时,也可以生成一个服务器端的会话标识(如session_id或token),用于后续接口调用的身份验证。
客户端保存会话标识:客户端收到服务器返回的会话标识后,将其保存在本地,通常使用小程序的全局存储wx.setStorageSync。例如:wx.setStorageSync('session_id', 'your_session_id')。
后续接口调用:在后续的网络请求中,客户端需要带上会话标识,以便服务器验证用户身份。例如,在wx.request的请求头中添加Authorization: Bearer your_session_id。
openid是用户在当前小程序的唯一标识,session_key是对用户数据进行加密签名的密钥,主要用于和微信服务器进行数据交互时的加密和解密,保障数据的安全性和完整性。同时,session_key具有时效性,且微信不会把其有效期告知开发者,开发者可通过wx.checkSession接口来校验session_key是否有效,失效时可重新执行登录流程获取新的session_key。
上一篇:在网页H5中打开微信小程序的功能