使用的软件:
- 微信开发者工具(前端)
- Visual Studio(后端)
使用的编程语言:
- WXML(前端)
- WXSS(前端)
- JS(前端)
示意图
图片来自微信开放文档
1.通过wx.login获取code
wx.login会生成一个code,通过想服务器发送code来获取到用户openid、session_key等信息,code会在每次请求时重新生成
wx.login({
success (res) {
if (res.code) {
console.log(res.code)
} else {
console.log('失败!' + res.errMsg)
}
}
})
2.通过code换取openid
需要像服务器提供appid、secret、js_code(刚刚获取的code)以及grant_type(authorization_code)等信息
( ! )注意:该段request请求openid不能直接放在wx小程序中!需要先request服务端,回传code数据再由服务端发起获取openid的请求!
(官方说法:小程序的开发者密码(AppSecret)是一个非常重要的字段,使用该密码可以调用小程序的所有后台接口。请不要将该字段放置在微信小程序的前端代码中,因为微信手机客户端容易被反编译并轻松获得Appsecret,造成重大的安全威胁。开发者应将Appsecret保存到后台服务器中,通过服务器使用Appsecert获取Accesstoken。微信公众平台小程序后台的服务器地址设置也将禁止将“api.weixin.qq.com”域名的配置,所有对于“api.weixin.qq.com”域名下的接口请求请全部通过后台服务器发起,请勿直接通过小程序的前端代码发起。)
wx.login({
success (res) {
if (res.code) {
console.log(res.code)
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code',
method: "GET",
data: {
appid: "",
secret: "",
js_code: res.code,
grant_type: "authorization_code"
},
success (res){
console.log(res.data)
},
finally (err){
console.log(err.errMsg)
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
Comments NOTHING