首先,你需要弹出授权弹窗,得到用户同意。由于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就得到了。