微信公衆號+h5項目開發

需求:以微信公衆號爲入口,提供h5頁面共用戶進行業務操做,用戶信息徹底依賴公衆號;mysql

方案:建立公衆號-》用戶關注公衆號-》靜默受權到h5頁面-》h5頁面獲取用戶信息-》用戶在h5頁面上進行業務操做;web

準備:公衆號一個(必須是須要認證的,認證須要硬性條件,無奈只能用測試帳號,測試帳號有一個坑的地方,下邊會講到), 能夠進行域名訪問80端口的服務器一臺(域名和服務器都好搞也便宜,可是域名須要備案才能訪問,無奈只能找內網穿透的工具,我用的是natapp,一開始用的是免費版的,可是域名很不穩定,每變一次都須要改代碼改設置,索性在natapp上買了一個vpi隧道9塊錢一個月,而後又在上面買了個域名,3塊錢一年,用了一下午還算穩定,用來作開發綽綽有餘了)sql

工具:VS+HBuilderX+Mysql+微信開發工具數據庫

步驟:api

1 .net建立webapi提供接口 實現功能A 用戶驗證和信息獲取 2 具體業務接口跨域

2 mysql數據庫存儲用戶信息和業務數據服務器

3 uni-app建立後h5頁面微信

也沒什麼高深的代碼,分享一下頁面受權部分代碼微信開發

onLoad() {
            var appId = 'xxx';
            var reg = new RegExp("(^|&)" + "code" + "=([^&]*)(&|$)");
            var r = window.location.search.substr(1).match(reg);
            var code = "";
            if (r != null)
                code = unescape(r[2]);

            if (code == null || code == "") {
                window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appId + "&redirect_uri=" +
                    encodeURIComponent("xxx") +
                    "&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect"; //頁面受權
            } else {
          //受權後根據返回的code獲取用戶信息 uni.request({ url:
'xxxx', header: { 'content-type': 'application/x-www-form-urlencoded' //自定義請求頭信息 }, method: 'POST', data: { Code: code }, success: res => { this.Data= res.data; }, fail: fail => {}, complete: () => {} }); } }

踩坑的地方:app

a js跨域的問題,網上解決方案不少,我索性把web站點和api站點部署到一個站點下,其中一個佈置成站點,另外一個佈置成該站點下的應用程序;

b 若是用戶還沒有關注公衆號,則提示需關注該公衆號,錯誤碼10006。眼下之意不關注不能玩。問題緣由網上大都說是測試帳號的緣由;

c 我一開始受權那裏思路錯了,按照需求,由於用戶是在關注公衆號的前提下操做,因此我只要經過靜默受權拿到用戶的openId就能夠經過公衆號接口拿到用戶詳細信息 ,一開始覺得必定須要非靜默受權。非靜默受權通常都是用戶沒有關注公衆號的狀況下才會用的。

d 以前沒接觸過公衆號開發,剛開始跟幾個同事討論這個東西,他們居然都很確定的說openid每一次都會變/或者從新關注公衆號後會變,今天事實證實他們錯了。由於openid變掉的話我都沒辦法標識用戶了,搞得慌慌的。看來實踐出真知,並且本身不肯定的技術必定不要說的很肯定的樣子,對人對己都很差,切記。

相關文章
相關標籤/搜索