<!-- 2018年10月12日 ,这时已经有官方的云函数来便捷地获取用户openId了,这个我以后再说下-->
首先,你需要弹出授权弹窗,得到用户同意。由于5月getUserInfo接口废弃,如何获得请参考我的一篇博客:
https://blog.csdn.net/qq_32117641/article/details/80554966;
其次,授权后你可以通过
wx.login({
success: function (res) {
var code = res.code;
}
})
获取一个有效期5分钟的code字符串;
然后,你需要通过访问
https://api.weixin.qq.com/sns/oauth2/access_token?appid=你的appid码&secret=你的secret码&code=上面code码&grant_type=authorization_code
得到json数据包,里面有openId
(这里要注意,app.weixin.qq.com不能做request域名,上述地址并不能放在前端代码中,因为它包含了你的appid和secret)
怎么办?
我是在bmob后端云做了个云函数,小程序request云函数,传去code,函数拼接访问地址得到含openId的数据包并返回给小程序,小程序再进行解析。
云函数:
function onRequest(request, response, modules) {
var code = request.body.name;
var http = modules.oHttp;
http('https://api.weixin.qq.com/sns/jscode2session?appid=你的appid码&secret=你的secret码&js_code='+code+'&grant_type=authorization_code',
function (error, res, body) {
response.send(body);
});
}
前端接收:
Bmob.Cloud.run('getOpenId', { "name": res.code }, {
success: function (result) {
var s = result.split("\"");
var openid = s[7];
}
}) //getOpenId是云函数名,res.code是wx.login获得的code
至此,openId就得到了。