背景:最新的软件需要使用到微信公众号,
微信公众号测试申请:微信测试公众号
获取用户id:https://api.weixin.qq.com/sns/oauth2/access_token?appid={appid}&secret={secret}&code={code}&grant_type=authorization_code
获取access_token:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appid}&secret={appsecret}
判断用户是否关注:https://api.weixin.qq.com/cgi-bin/user/info?access_token={token}&openid={openid}&lang=zh_CN
逻辑:用户访问的二维码是访问的获取用户code地址,成功后重定向到我的页面。我获取access_token,根据code获取openid,再根据openid和access_token判断是否关注过,未关注前往关注页面,关注后前往功能页面
具体内容:具体开发内容就是扫码跳转某个页面,在页面上完成一些功能。
没有域名的话可以用内网穿透软件。NETAPP
因为不涉及到公众号页面,所以流程是比较简单的。
梳理一下大致流程。我后台提供了一个接口(PS:该接口要求可以直接访问,无权限要求,同时有GET请求和POST请求两种方式)。当我申请配置的时候,微信调用get请求,访问OK的话会可以拿到appid和appsecret
get请求,公司已经封装好接口,我直接调用即可。
当有用户关注或取消关注的时候会调用该接口的post方
扫码跳转页面:需要配置要跳转的地址(项目地址和接口地址)
项目地址配置:点击下面页面修改按钮
其中appid为申请时获取到的appid,redirect_url为重定向的url,state为参数,重定向完成以后,该参数会原封不动返回
要注意的是redirect_url 格式需要urlEncode 对格式转换(地址从http开始到结尾全部,而且会返回授权会掉页面域名。所以授权回调域名的地址要对,redirect_url=A,但是回调域名是B的时候,返回的url为B)。
访问以后会返回我们的url地址。{redirect_url}?code={code}$state={state}
这时候我们后台再通过code值去取openid。每一个微信用户在一个公众号有一个唯一的openid。我们就可以通过openid来分辨用户。后台有一个专门的微信用户表来记录微信用户。我们是在通过code获取用户时存入。同时不删除。根据个人需要。如果要精确的话可以通过提供的post接口实时增加删除用户。
PS:获取用户code测试公众号关注会报未关注错误,然而正式的不会报错
获取access_token每两小时刷新一次,我是存放在后台一个token,和一个date,date是获取后的两个小时
access_token格式
判断是否关注格式