
我们以实际案例,展示如何通过官方API实现公众号小程序内用户登录授权。以下是完整步骤与关键配置。
准备工作与参数配置
在开始前,需完成公众号开发设置与AppID配置。确保开发者后台已开启登录授权功能,并在代码中正确填写。
配置参数如下:
参数 | 说明 |
---|---|
AppID | 公众号唯一的标识,用于身份验证 |
Redirect URI | 用户授权后重定向的URL |
Scope | 请求的权限范围,如snsapi_userinfo |
配置完成后,将获取到AppSecret,用于后续接口调用。
发起用户登录授权请求
通过wx.login获取code,再调用微信登录接口获取openid与session_key。
wx.login({
success: function(res) {
if (res.code) {
// 发起网络请求
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',
data: {
appid: 'YOUR_APPID',
secret: 'YOUR_APPSECRET',
js_code: res.code,
grant_type: 'authorization_code'
},
success: function(response) {
console.log('OpenID:', response.data.openid);
console.log('Session Key:', response.data.session_key);
}
});
} else {
console.log('登录失败!' + res.errMsg);
}
},
fail: function(err) {
console.log(err);
}
});
关键点:code需加密传输,防止泄露。
处理用户信息授权
若需获取用户详细信息,需在发起登录请求时添加snsapi_userinfo权限。
wx.login({
success: function(res) {
if (res.code) {
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',
data: {
appid: 'YOUR_APPID',
secret: 'YOUR_APPSECRET',
js_code: res.code,
grant_type: 'authorization_code'
},
success: function(response) {
// 调用获取用户信息接口
wx.getUserProfile({
desc: '用于完善会员资料',
success: function(info) {
console.log('昵称:', info.nickName);
console.log('头像:', info.avatarUrl);
},
fail: function(err) {
console.log(err);
}
});
}
});
}
}
});
注意:getUserProfile需用户明确授权,否则会失败。
错误处理与安全注意事项
常见错误及解决方案:
错误码 | 原因 | 解决方法 |
---|---|---|
auth deny | 用户拒绝授权 | 提示用户重新授权 |
code expired | code过期 | 重新发起登录请求 |
appid error | AppID错误 | 检查配置是否正确 |
安全建议:
- code传输必须使用HTTPS
- session_key仅用于服务端验证,不可暴露
- 避免在客户端存储敏感信息
API接口限制说明
根据微信官方文档,jscode2session接口限制如下:
- 每次请求有效期60秒
- 每个code只能调用一次
- 单日每个账号请求限制5000次
超出限制会导致请求失败,需合理控制调用频率。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。