openId是微信对于用户的唯一辨识,只要有用户关注你的公众号,微信会通过公众号和用户微信号通过一种算法生成一种唯一标识码,也就是openId,用数学表达式也就是说:
x=你的公众号,y=用户微信号,f()函数表示算法
那么openId = f(x,y);
再看下官方文档里的解释:
在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。
后面就讲讲怎么获取到openId把,我下面先讲一种简易的方式(还有一种后续有空加上)
1.在公众号后台设置回调的域名(大多情况下是你的项目)
开发-接口权限-网页账号-用户授权获取用户基础信息中修改
2.在页面上访问下面的网址
https://open.weixin.qq.com/connect/oauth2/authorize?appid=*******&redirect_uri=你回调的地址&response_type=code&scope=snsapi_base&state=1#wechat_redirect
上面的会返回到你回调的地址?code=xxxxxxxxx
也就是说它会返回到你回调的地址并且带上code参数,一般情况下,回调的地址设置为后端的action即可,然后就可以获取到code了,当你获取到code,已经成功了一大半。
3.然后在后端访问下面的网址
https://api.weixin.qq.com/sns/oauth2/access_token?appid=***&secret=***&code=***&grant_type=authorization_code
code的参数用刚刚返回的code值。
4.上面网页将会返回json,其中openId就在其中。
至此,openId就获取到了,但是要注意:此处只获取到了openId,也就是不需要用户授权的,要获取用户其它的信息请参考接口文档。还有就是每次获取openId请重新获取code,code值不要重复使用,防止出错。