微信开发遇到的那些事儿

记得去年的时候,做了一个微信投票的程序,差点被一个老奶奶暴打一顿。。。

图片发自App

故事发生的背景是,公司要举办一个阅读大赛,参赛学员都会发布到网上进行网络人气投票竞选。因为觉得活动比较小众,而且参赛奖项也不是很诱人,所以写程序的时候没有过多去考虑刷票的情况。导致的结果就是活动上线以后,个别家长找外面专业的人员刷票,甚至还有一个老奶奶直接冲进公司,拿了一张自己一晚上没睡觉统计出来的投票数据表,要求见技术人员(吓了我一身冷汗)

经历这件事儿以后,这次终于长记性了(我觉得真的只是我觉得)。今天又做了一个微信投票的程序,功能要求:一个微信一天只能投3票。附一张程序逻辑草图(写字很烂,接受吐槽)

图片发自App

大概的逻辑是,用户访问页面的时候获取用户的微信openid,每次投票数据库添加一条投票记录,这样就能保证:

1.用户只能在微信端投票。

2.一个用户一天只能投票有限次数。

之前考虑过可以通过ip限制,但是专业的刷票工具可以变换ip。

需要注意的是一定得是服务号,因为只有服务号才有网页授权接口权限。操作流程:

1.访问网页授权access_token接口,通过appId获得code。

2.通过code、appId和appSecret,就可以拿到openid。

然后把openid保存到cookie和数据库,下次访问的时候直接就可以用于鉴权,如果是新用户,重新获取一遍。我是通过静默授权只获取openid,不需要用户头像和昵称,所以用户无需点击确认授权,也不需要用户关注微信公众号。

图片发自App

本来到此就可以结束了,但是感觉还缺点啥:微信投票活动不能带来增粉怎么能够(用户无需关注,直接投完票拍屁股就走了)!于是又加了一个关注微信,从微信底部导航进入加油喝彩(当然这个页面屏蔽了分享,只能从导航进入),每个微信只能加油一次,可以直接增长10票,留言内容也会以弹幕形式展示在学员投票页。

最后还有一个知识点,微信有2个access_token,一个是全局access_token有效时间7200s(2小时),并且一天最多只能获取2000次,上文我们说的网页授权access_token,次数不限,时间最长5分钟。

其实网上有好多现成的程序,为了学习自己手写了一个,本文用于自己学习记录,如果要喷,还请嘴下留情 ^_^

你可能感兴趣的:(微信开发遇到的那些事儿)