南宁微信开发教程之openid

2017-11-20 大咖分享 阅读 (283)


        openid,这个是微信开发中经常需要使用到的重要参数,在微信支付、识别用户唯一标识、通过公众号给用户发送消息等都需要用到openid。它的获取方式略微复杂,这里做个总结和备忘,还有类似的Hello Wrold小程序


微信开发

openid是什么

        openid是一个,经过微信服务器加密处理了的用户的微信号,它的获取主体是公众号。也就是说,必须由某一个公众号来获取这个用户的openid,所以不同的公众号去获取同一个微信用户的openid都是不一样的,但是openid针对同一个公众号是唯一且不会变化的。所以第一次获取之后,一般保存在数据库中。

获取openid第一步:获取code

        openid不是随便就能获取的,首先要获取code。而code的获取实际上是用户通过url链接跳转到微信指定的页面进行授权,授权成功了之后code会以url?code=*******的形式在跳转回开发者指定的路径。code未使用有效期5分钟,使用了立即失效。

        appid:开发者ID(公众号后台-开发-基本配置中查看);

        redirect_uri:获取完code后,将会以redirect_uri?code=****&state=****的形式从微信授权页跳转回我们指定的redirect_url页面;

        state:该参数非必填,可以理解为自定义参数;

        scope:snsapi_base是静默授权方法,用户无感知的授权;snsapi_userinfo是需要用户手动点击确认的授权方式,这种授权除了可以获取code,还能直接获取到微信用户的昵称、头像、性别、地区等非敏感数据。用户感知类似下图示例:

        所以用户最终跳转的是jumpUrl这个路径去获取code,获取到code以后,会携带code参数跳转回到redirect_uri这个路径。

        其中redirect_uri参数要注意:

        1,查看该公众号是否有权限获取用户授权:公众号后台-开发-接口权限-网页授权中查看,未认证的公众号都无此权限

        2必须是在通过备案的域名下,不能是ip地址,不能带端口,不能使短链接;

        3该备案的域名需要在公众后台提前配置好:公众号后台-设置-公众号设置-功能设置-网页授权域名。填写好域名后,会提示下载一个txt文本,将这个文本上传至域名所在的服务器上,才能保存成功,因为微信会验证这个域名是否存在该文件。

最后一步

        获取到code后,携带code、appid(开发者ID)、secret(开发者密钥)参数get请求url,这样就能获取到openid。

        以上代码是简单的示例,方法因实际需要做改变。回顾一下整个流程:

        跳转微信的授权路径去获取code;

        获取code跳转回来;

        拿到code换成openid。

        code每次获取到的都不一样,但是针对同一个微信用户每次获取的openid是唯一且不会变化的。存储openid可以作为微信用户身份的唯一标识。


在线
客服

在线客服服务时间:9:00-22:00

客服
热线

400-875-0771
7*24小时客服服务热线

关注
微信

官方微信公众号