微信開發遇到的那些事兒
記得去年的時候,做了一個微信投票的程式,差點被一個老奶奶暴打一頓。。。

圖片發自簡書App
故事發生的背景是,公司要舉辦一個閱讀大賽,參賽學員都會發布到網上進行網路人氣投票競選。因為覺得活動比較小眾,而且參賽獎項也不是很誘人,所以寫程式的時候沒有過多去考慮刷票的情況。導致的結果就是活動上線以後,個別家長找外面專業的人員刷票,甚至還有一個老奶奶直接衝進公司,拿了一張自己一晚上沒睡覺統計出來的投票資料表,要求見技術人員(嚇了我一身冷汗)
經歷這件事兒以後,這次終於長記性了(我覺得真的只是我覺得)。今天又做了一個微信投票的程式,功能要求:一個微信一天只能投3票。附一張程式邏輯草圖(寫字很爛,接受吐槽)

圖片發自簡書App
大概的邏輯是,使用者訪問頁面的時候獲取使用者的微信openid,每次投票資料庫新增一條投票記錄,這樣就能保證:
1.使用者只能在微信端投票。
2.一個使用者一天只能投票有限次數。
之前考慮過可以通過ip限制,但是專業的刷票工具可以變換ip。
需要注意的是一定得是服務號,因為只有服務號才有網頁授權介面許可權。操作流程:
1.訪問網頁授權access_token介面,通過appId獲得code。
2.通過code、appId和appSecret,就可以拿到openid。
然後把openid儲存到cookie和資料庫,下次訪問的時候直接就可以用於鑑權,如果是新使用者,重新獲取一遍。我是通過靜默授權只獲取openid,不需要使用者頭像和暱稱,所以使用者無需點選確認授權,也不需要使用者關注微信公眾號。

圖片發自簡書App
最後還有一個知識點,微信有2個access_token,一個是全域性access_token有效時間7200s(2小時),並且一天最多隻能獲取2000次,上文我們說的網頁授權access_token,次數不限,時間最長5分鐘。
其實網上有好多現成的程式,為了學習自己手寫了一個,本文用於自己學習記錄,如果要噴,還請嘴下留情 ^_^