关于微信小程序后端获取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就得到了。

猜你喜欢

转载自blog.csdn.net/qq_32117641/article/details/80560344