背景:最新的軟件需要使用到微信公衆號,
微信公衆號測試申請:微信測試公衆號
獲取用戶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格式
判斷是否關注格式