簡書地址:https://www.jianshu.com/p/b2884a226247html
當業務系統產生消息須要經過微信推送給指定的用戶時,首頁須要將業務系統類的用戶和微信帳號創建一個關係。這裏採用的是微信網頁受權接口,得到微信用戶受權後,獲取微信用戶的帳號信息,並與業務系統的用戶進行綁定。nginx
調用微信網頁受權首先要設置回調域名,微信關於回調域名的說明有:
一、在微信公衆號請求用戶網頁受權以前,開發者須要先到公衆平臺官網中的「開發 - 接口權限 - 網頁服務 - 網頁賬號 - 網頁受權獲取用戶基本信息」的配置選項中,修改受權回調域名。請注意,這裏填寫的是域名(是一個字符串),而不是URL,所以請勿加 http:// 等協議頭;
二、受權回調域名配置規範爲全域名,好比須要網頁受權的域名爲:www.qq.com,配置之後此域名下面的頁面http://www.qq.com/music.html 、 http://www.qq.com/login.html 均可以進行OAuth2.0鑑權。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com沒法進行OAuth2.0鑑權
三、若是公衆號登陸受權給了第三方開發者來進行管理,則沒必要作任何設置,由第三方代替公衆號實現網頁受權便可。
由上圖可知,回調域名不支持IP地址、端口號、短鏈域名,域名需經過ICP備案驗證,這給開發過程當中的調試帶來了必定的困難,咱們的作法是使用在系統主域名創建一個二級域名,而後在公網服務器上使用nginx作了一個代理,將請求轉發至公司內網,在公司內網的防火牆上設置了端口的轉發,而後就能夠在本地進行開發調試了。web
微信網頁受權流程主要有4步:
一、引導用戶進入受權頁面贊成受權,獲取code。
二、經過code換取網頁受權access_token(與基礎支持中的access_token不一樣)。
三、若是須要,開發者能夠刷新網頁受權access_token,避免過時。
四、經過網頁受權access_token和openid獲取用戶基本信息(支持UnionID機制)。瀏覽器
微信網頁受權的接口在微信的官方幫助文檔微信網頁受權中有詳細的說明,就再也不詳述,本文主要說明在開發過程當中對一些問題的處理和注意項。安全
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
。通常狀況下,業務系統的用戶都是經過pc瀏覽器訪問業務系統,因而在此步,咱們將上述連接生成二維碼圖片(QrCode.Net),用戶使用微信掃描二維碼,而後就打開了連接。redirect_uri(受權後重定向的回調連接地址)
中,咱們生成了一個隨機的用戶token放在回調的url中,在微信受權成功後重定向回來時,經過識別url中的用戶token,進而識別出是哪一個用戶。subscribe
字段,該字段爲1時,說明用戶已關注咱們的微信公衆號。