收藏
评论

小程序openid的灌水贴

做微信开发的都知道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#的解密函数,需要的可以留言。。

相关代码不贴了,不为微信添堵。

收场,可以的给个赞吧。。。



最后一次编辑于  2018-06-14  (未经腾讯允许,不得转载)
复制链接收藏赞 4

10 个评论

  • 追梦的人(IT大叔一枚)
    追梦的人(IT大叔一枚)
    2018-06-14

    忘记说了,wx.login和wx.getUserInfo获得的openid是一样的。

    2018-06-14
    赞同 1
    回复
  • 星光
    星光
    2018-06-14

    你没有看文档吗,获取sessionkey+openid是自己的服务器后台发送请求,怎么可以直接在小程序request呢

    2018-06-14
    赞同 1
    回复 2
    • 追梦的人(IT大叔一枚)
      追梦的人(IT大叔一枚)
      2018-06-14

      感谢你的回复,其实直接在小程序request也是可以获得sessionkey+openid滴,所以这个属于最简单的方法。这个方法我已经测试过了。。但真的不是太安全,所以才写了上面一堆废话。。

      2018-06-14
      1
      回复
    • herock
      herock
      2018-06-28回复追梦的人(IT大叔一枚)

      这个方法只能在本地测试时用,真正提交为正式版本的时候就不行了,因为不允许把 api.weixin.qq.com 添加为安全域名。

      2018-06-28
      1
      回复
  • Akira
    Akira
    2018-06-28

    都是要后端处理,不能直接wx.request。

    第一种是便于只有微信小程序端的登录,要个openid就够了

    第二种是多端登录,需要确保能拿到unionid

    2018-06-28
    赞同 1
    回复
  • Ripe_🍊
    Ripe_🍊
    2018-06-15

    可以加一下我吗?  请求问题  qq 450006509   追梦大哥

    2018-06-15
    赞同
    回复 1
    • 追梦的人(IT大叔一枚)
      追梦的人(IT大叔一枚)
      2018-06-16

      有问题直接提吧,抱歉QQ就不加了...

      2018-06-16
      1
      回复
  • Midoruwea
    Midoruwea
    2018-06-22

    你是如何把api.weixin.qq.com加到白名单的?很明显第一种方法无法实现。

    2018-06-22
    赞同
    回复 1
    • 追梦的人(IT大叔一枚)
      追梦的人(IT大叔一枚)
      2018-06-26

      你说的也是,我也欠缺一些严谨性,当时我在开发工具上测试了.但没提交也没在真实的环境里用这方法.

      2018-06-26
      1
      回复
  • 阿哈,外太空 🚀
    阿哈,外太空 🚀
    04-16

    请教个问题,openid暴露给前端,并保存在缓存里,有没有危害呢?一直整不明白,如果openid泄露了会怎么样

    04-16
    赞同
    回复