我這里有個公眾號網(wǎng)頁渠啊,需要獲取用戶信息逻卖,折騰了一天,終于搞定了昭抒,回頭看看其實很簡單,但是配置很復(fù)雜
1.配置防火墻打開相關(guān)入站端口炼杖,怎么打開端口請百度灭返。因為uniapp調(diào)試時自啟動一個服務(wù)器,打開manifest.json加入
"h5" : { "title" : "xx平臺", "domain" : "你的域名", "sdkConfigs" : { "maps" : {} }, "devServer" : { "port" : 8081,//調(diào)試用服務(wù)器端口 "disableHostCheck" : true, "proxy" : { "/gzh" : { "target" : "http://192.168.1.221:8080/gzh", "changeOrigin" : true, "secure" : false, "pathRewrite" : { "^/gzh" : "" } } }, "https" : false? } }
2.申請一個域名坤邪,沒有這個不行熙含,可以考慮花生殼,natapp,ngrok艇纺,公司已經(jīng)買了花生殼怎静,所以我直接用了。
3.申請開通微信公眾號平臺測試號黔衡,配置:注意蚓聘,不要加http前綴,填寫你的公眾號網(wǎng)頁域名
先參考微信開放文檔:
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
正文開始盟劫!分3步:
1.向我的服務(wù)器申請code夜牡。2 回調(diào)到uniapp頁面,這一步很重要侣签,也是別的文章沒提到的塘装。3.從uniapp頁面上向我服務(wù)器申請獲取用戶信息
看到了吧,1,3兩步其實都是在我服務(wù)器上獲取的信息影所,不是網(wǎng)上其他人通過vue客戶端獲取蹦肴,這樣更簡單更安全,因為所有關(guān)鍵信息都是在服務(wù)器上配置的猴娩。具體:
服務(wù)器用的spring boot,用了wxJava庫阴幌,這個庫功能可多了勺阐,大家可以自己百度。
1.服務(wù)器代碼:這里注意不能用ajax調(diào)用裂七,要用window.location.href,從uniapp跳轉(zhuǎn)到這個地址皆看,需要配置好回調(diào)地址,這個回調(diào)地址是uniapp上的一個顯示用戶信息的page背零。這里scope分2種腰吟,snsapi_base會讓用戶顯示一下正在登錄,不需要用戶同意徙瓶,也可以獲取用戶信息毛雇。snsapi_userinfo需要用戶點確定同意。這里用第一種方式侦镇。服務(wù)器指示客戶端跳轉(zhuǎn)到微信服務(wù)器獲取code
2 微信服務(wù)器會回調(diào)回來灵疮,這里回調(diào)回來的地址就是uniapp的page地址,這個頁面內(nèi)容就不發(fā)了壳繁,沒什么內(nèi)容震捣,主要就是
onLoad(option){ console.log(option.code)//空的,獲取不到因為參數(shù)在#前 let code=getUrlParam('code') this.info=getUserInfo(code,'') }闹炉,但是這里有個問題蒿赢,他code,state參數(shù)會在#之前,通過頁面沒法獲取渣触,所以需要從window.location.search獲取羡棵。再次向服務(wù)器申請,獲取用戶信息(最終目的)嗅钻。
3.獲取用戶信息