做微信开发的都知道openid的重要性,这里不再炒冷饭了.
今天我们就来讨论一下小程序中openid获取的姿势吧..
首先获取openid有个最最简单的方法就是通过wx.login来获取,
只需要在通过wx.login中code,然后通过wx.request向https://api.weixin.qq.com/sns/jscode2session
发送你们的js_code、appid、secret及grant_type就能坐等openid和session_key的返回了。。。
这是最最简单的,但官方肯定不建议把这个写在小程序中,因为很容易将你的appid和secret暴露出来。
因此他们推出了另一种复杂而不讨好的方法:数据加解密算法来获取openid.
用户首先通过刚才的wx.login获得的code发送到开发者的服务器获得session_key,然后保留。
再通过wx.getUserInfo获得encryptedData和iv,结合刚才的session_key,进行解密从而获得openid和appid的信息。
虽然这种方式复杂,但安全还是实实在在的。
至于那种好,就看自己的项目吧,个人推荐复杂的,虽然不是太讨好,但胜在安全。
最后,不知道要有没有人需要encryptedData C#的解密函数,需要的可以留言。。
相关代码不贴了,不为微信添堵。
收场,可以的给个赞吧。。。
网友回复
都是要后端处理,不能直接wx.request。
第一种是便于只有微信小程序端的登录,要个openid就够了
第二种是多端登录,需要确保能拿到unionid
你没有看文档吗,获取sessionkey+openid是自己的服务器后台发送请求,怎么可以直接在小程序request呢
忘记说了,wx.login和wx.getUserInfo获得的openid是一样的。
你是如何把api.weixin.qq.com加到白名单的?很明显第一种方法无法实现。
可以加一下我吗? 请求问题 qq 450006509 追梦大哥