微信通過網頁授權可以在網頁內獲取微信用戶信息,進而在網頁內實現相關的業務邏輯。
微信網頁授權的scope有兩種,一、base 只能獲取openId信息,二、userInfo 獲取的信息較多。
同意授權頁面鏈接最終會是如下形式:
`https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect`
或者
`https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
業務場景
進入頁面——判斷該用戶是否激活——激活顯示后續頁面——未激活顯示激活頁面
我的思路是通過頁面授權,頁面獲取openId信息,通過url后面拼接的code獲取openId信息,然后根據openId查詢數據庫獲取用戶激活情況返回給前端頁面。
但是直接通過網頁授權會出現一個問題,code用過一次時候就會失效,如果用戶在微信內刷新網頁就會出現問題。
因此,我的解決思路是微信授權頁面不是直接指向靜態頁面,而是指向RESTFUL服務后臺,控制器處理后獲取用戶的相關信息將參數通過加密合成一個參數拼接在靜態頁面的url后,然后重定向到靜態頁面,如此頁面直接獲取用戶的信息,用戶在微信內刷新網頁也不會有影響。