美文网首页WeChat小程序java 设计
微信小程序中的openid和unionid及其java后端的实现

微信小程序中的openid和unionid及其java后端的实现

作者: 程序员三千_ | 来源:发表于2019-03-28 14:04 被阅读80次

    openId

        是表示用户在你的当前应用中的唯一标示,比如小程序,微信公众号等,这些都算是一个应用,如果你有多个应用,同一个用户的openId可能并不相同

    unionid

        借用微信官方文档中的话来说,如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的

    服务端获取openid流程:

    过程并不复杂,其实这里需要说一下的是,为什么会多了一步,开发者服务器去访问微信接口呢?其实,微信官方文档说得很清楚,如果appid和secret存在应用本地,应用本身是容易被破解和抓包,非常容易泄露的,会导致安全问题;因此,放到开发者的服务器去访问,能够保证一定的安全性,除非服务器被攻破,否则很难知道appid和secret的,而且现在微信官方在小程序的后台的request合法域名配置里也禁用了https://api.weixin.qq.com这个域名,所以在小程序端,现在是无法获取openid了。如下图:

    Java后端的实现:

    主要就是一个拼接jscode+appid+appsecret的get请求

    controll里的的代码实现:

    小程序端传入一个jscode就可以了,

    请求成功的结果:

    {"errcode":"null","unionid":"null","sessionKey":"WxtTYlJOFpYVfNmR4qROPQ==", "openid":"ouED70N3a8TEOl6kzwVbwtHSjuPg","errmsg":"null"}

    总结

        同一个用户,在你的多个应用中,openid可能都不相同;但是,unionid一定会相同的。所以,如果你有多个小程序或者微信公众号,需要确定是否为同一个用户的时候,就需要unionid来确定。

    相关文章

      网友评论

        本文标题:微信小程序中的openid和unionid及其java后端的实现

        本文链接:https://www.haomeiwen.com/subject/cmeqbqtx.html