1、wx.login(OBJECT)
调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key)。用户数据的加解密通讯需要依赖会话密钥完成。
2、code 换取 openid
这是一个 HTTPS 接口,开发者服务器使用登录凭证 code 获取 session_key 和 openid。其中 session_key 是对用户数据进行加密签名的密钥。为了自身应用安全,session_key 不应该在网络上传输。
接口地址:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
微信开放文档:https://developers.weixin.qq.com/doc/aispeech/miniprogram/options.html#获取用户%20openid
前端:
一、js文件:
Page({
primary:function(){
wx.login({
success: res => {
console.log('code:'+res.code); // 先login得到code
if (res.code) {
var url = 'http://127.0.0.1:8000/api/wx/openid'
wx.request({
url: url,
data:{
'code':res.code
},
method: 'GET',
success: function (res) {
// res.data.openid 即为所求openid
console.log('openid:'+res.data);
console.log('获取成功')
}
});
}
}
});
},
})
二、wxml文件:
<button type="primary" bindtap="primary"> 获取openid </button>
后端:
写个方法:
def getOpenid(request):
if request.method == 'GET':
code=request.GET.get("code")
url = "https://api.weixin.qq.com/sns/jscode2session"
url += "?appid=*************"
url += "&secret=************"; #从官网找
url += "&js_code=" + code;#从微信小程序传来的code
url += "&grant_type=authorization_code";
r = requests.get(url)
openid = r.json().get('openid', '')
return HttpResponse(openid)
效果: