摘要:一直都想搞一下微信公眾號網(wǎng)頁開發(fā)公司忙沒有時間自己也沒開發(fā)過所以也沒有頭緒前兩天通過自己的摸索以及自行查找的資料終于通過在本地成功的獲取到了微信的及簽名以及調(diào)用微信的接口因為筆者自己在做的時候費了挺長時間沒有找到一個相對完整詳細的一個項目借
一直都想搞一下微信公眾號網(wǎng)頁開發(fā),公司忙沒有時間自己也沒開發(fā)過所以也沒有頭緒,前兩天通過自己的摸索以及自行查找的資料,終于通過nodejs在本地成功的獲取到了微信的access_token及簽名,以及調(diào)用微信的接口.因為筆者自己在做的時候費了挺長時間,沒有找到一個相對完整,詳細的一個項目借鑒,有很多的坑,所以下面我將詳細的把自己做的過程給大家講一下,從一開始的注冊微信公眾號到成功調(diào)用微信接口,以給那些還沒有開發(fā)過經(jīng)驗的人借鑒,第一次寫文章,文筆不好,勿怪.
1.注冊一個微信公眾號怎么注冊微信公眾號,可以自行百度一下,網(wǎng)上很多注冊的教程,這里就不浪費口舌了
2.開通"開發(fā)者模式"在微信公眾平臺官網(wǎng)登錄之后,我們第一步是要成為開發(fā)者,在首頁點擊"基本配置",右邊會出現(xiàn)一個頁面,有個"成為開發(fā)者"按鈕,點擊它,我這里我已經(jīng)是開發(fā)者了,所以已經(jīng)沒有了
3.查看基本信息成為開發(fā)者之后,可以看到如下頁面,我們可以看到自己的AppId和Appsecret(這個很重要,最好記在哪里,記在手機/筆記本都可以)
4.申請微信公眾號測試賬號為什么申請測試賬號,一因為微信公眾號的接口它是有調(diào)用次數(shù)限制的,二是測試賬號比較方便,可以胡來,哈哈哈,點擊"開發(fā)->開發(fā)者工具",就在之前點擊的"基本配置"下面(如后面出現(xiàn)一些點擊"xxx",一般都在頁面左側(cè)),可以看到如下頁面,選擇"公眾平臺測試賬號",然后我們需要用手機微信掃碼登錄
5.測試賬號配置登錄成功之后,會看到下面的頁面,在我圈的紅色框中,填寫你的域名,比如我vue本地項目啟動成功后是localhost:9999,你就填localhost:9999,如果是云服務(wù)器域名,你就填你申請的域名,如www.xxx.com,上面的接口配置信息暫時可以不用配置,到這里我們已經(jīng)完成了整個微信公眾號測試賬號的配置
6.創(chuàng)建vue項目這里的前提是你已經(jīng)安裝了node并且會vue,我們通過vue-cli創(chuàng)建一個項目,創(chuàng)建項目過程的截圖我就不放出來了,移步到這里查看,如果看不懂,也可以自行百度一下 哈哈哈,網(wǎng)上也有很多怎么通過vue-cli創(chuàng)建vue項目,我創(chuàng)建這個項目用的是vue-cli 2.0,現(xiàn)在已經(jīng)是vue-cli 3.0,我自己也是在摸索中 嘿嘿...下面的圖就是通過vue-cli創(chuàng)建的項目
7.node配置注意在上圖中,server文件夾是需要自行創(chuàng)建的,vue-cli創(chuàng)建的項目是沒有這個文件夾的,里面放了相關(guān)的nodejs代碼,接下來我們看看里面都有什么文件,下圖中我給主要的文件都作了注釋,其余2個是鏈接Mysql數(shù)據(jù)庫的,我這里就不講了,我自己也不是很會,也是參照別人的,哈哈哈,就不獻丑了
我們先看看api.js,這里面就寫了一個方法是用來獲取access_token和簽名的,這里用的是axios,所以在vue項目里你要安裝axios.接下來我們先定義一下appId和appsecret,值就是你之前申請測試賬號時的appId和appsecret,請求地址在微信開發(fā)者文檔里有,移步微信開發(fā)者文檔,獲取到access_token之后,我們通過access_token獲取微信簽名(微信簽名算法在sign.js,稍后我會貼出來),然后返回獲取到的數(shù)據(jù),這里的定義的config對象也可以在微信開發(fā)者文檔里看,你也可以定義在前端-----我們是通過module.exports把代碼暴露出去以便引用
微信簽名算法
var createNonceStr = function () { return Math.random().toString(36).substr(2, 15); }; var createTimestamp = function () { return parseInt(new Date().getTime() / 1000) + ""; }; var raw = function (args) { var keys = Object.keys(args); keys = keys.sort(); var newArgs = {}; keys.forEach(function (key) { newArgs[key.toLowerCase()] = args[key]; }); var string = ""; for (var k in newArgs) { string += "&" + k + "=" + newArgs[k]; } string = string.substr(1); return string; }; /** * @synopsis 簽名算法 * * @param jsapi_ticket 用于簽名的 jsapi_ticket * @param url 用于簽名的 url ,注意必須動態(tài)獲取,不能 hardcode * * @returns */ var sign = function (jsapi_ticket, url) { var ret = { jsapi_ticket: jsapi_ticket, nonceStr: createNonceStr(), timestamp: createTimestamp(), url: url }; var string = raw(ret); jsSHA = require("jssha"); shaObj = new jsSHA(string, "TEXT"); ret.signature = shaObj.getHash("SHA-1", "HEX"); return ret; }; module.exports = sign;
我們再看一下router.js,代碼很少,就是你前端要請求的路由地址,這里我們要用到express,所以你也要保證你的vue項目里的node_modules包里有express,沒有你就安裝一下,不會安裝就百度(屢試不爽),反正你缺少什么模塊你就安裝什么模塊就行了,跑題了,繼續(xù)說下圖中的代碼,我們引入之前的api.js,然后調(diào)用express.Router(express.Router可以認為是一個微型的只用來處理中間件與控制器的 app,它擁有和 app 類似的方法,例如 get、post、all、use 等等),定義了前端請求接口地址"/getToken",調(diào)用api.js里定義的方法,也需要把router暴露出去
最后我們看看index.js,這里我們把剛剛寫好的router.js引入進來,把express也引入進來,并且創(chuàng)建一個express應(yīng)用程序app(就是第4行代碼),設(shè)置一下請求頭和跨域還有返回的狀態(tài)碼,app.use()一下后端api路由,"/api"是調(diào)用中間件函數(shù)的路徑,我前端用了代理,請求路徑都增加了"/api",所以后端的所有請求路徑也要加上,最后app.listen(8088)監(jiān)聽端口號(你喜歡什么數(shù)字都行,端口號不用和我一樣)
下面我們通過cmder(或者你用window自帶的cmd命令打開DOS窗口)進入server文件夾,輸入node index.js啟動8088端口,看啟動成功了...
8.啟動vue項目也通過cmder進入到vue項目所在的目錄,npm run dev啟動
9.前端環(huán)境配置然后我在static文件夾下面創(chuàng)建了一個js文件夾,里面放了一個環(huán)境配置的文件
本地請求接口是localhost:8088,你也可以添加生產(chǎn)環(huán)境的,我這里還沒添加,比如
"production": { apiRoot: "http://www.xxx.cn:8088"}
線上的不添加后面的端口號8088不知道可不可以我還沒試過…然后在index.html里引用一下
在"src"文件夾下創(chuàng)建一個api文件夾,在此文件下創(chuàng)建一個index.js,用來封裝我們前端的請求
這里的window._ENV.apiRoot就是我在static文件夾里的環(huán)境配置文件, 之前我們已經(jīng)在index.html引入過了,所以能在這里用, 為什么這里要傳url,因為在node里請求簽名的時候簽名算法那里需要
10.修改config配置打開vue項目下的config文件夾里的index.js,設(shè)置一下代理,因為這里添加了"/api",所以后端的都要加上,修改了配置,vue項目需要重新啟動一下
11.測試獲取token及簽名,并調(diào)用微信接口我們先看看"src"文件夾里的目錄結(jié)構(gòu),我把vue-cli自動創(chuàng)建的刪了部分,然后自己創(chuàng)建了部分
我們在pages文件夾里創(chuàng)建一個頁面組件index
下面是index.vue里的代碼,這里我用到iview,所以是
把請求token的方法寫在methods里,然后created的時候調(diào)用,我這里寫了兩個按鈕進行測試,用到了獲取地理位置,打開地址位置,微信掃一掃接口,這里除了獲取地理位置,其他通過用戶交互的都寫在methods里
12.使用微信開發(fā)者工具調(diào)試下載并安裝一下微信開發(fā)者工具(微信開發(fā)者工具下載),用二維碼登錄,在地址欄輸入你的vue啟動地址,就OK了,可以查看接口是否調(diào)用成功了,這里一開始獲取地理位置成功
點擊了兩個按鈕之后,也是成功了看下圖,哈哈哈,很開心....
文章到這里就結(jié)束了...大家也可以去我的github上查看我的源碼(項目地址),后面我會繼續(xù)寫一篇《如何將node + vue 項目部署到服務(wù)器上,并調(diào)用微信接口》,大家可以先感受一些我線上的demo(線上demo),用手機微信打開,access_token一天上限是2000次,如果你沒有體驗成功,可能就是到上限了,也可以關(guān)注我的微信公眾號,后面陸續(xù)的我會把文章發(fā)布到微信公眾號上...附上公眾號的二維碼,目前還沒有發(fā)布文章,不要嫌棄哈哈哈...如有問題可以在下面評論,或者指出我的問題,大家互相學(xué)習(xí),謝謝...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/108513.html
摘要:最近開發(fā)微信公眾號內(nèi)嵌頁面,使用搭建的項目,由于業(yè)務(wù)需求,需要實現(xiàn)微信自定義分享功能,所以項目中集成微信。 最近開發(fā)微信公眾號內(nèi)嵌H5頁面,使用vue搭建的項目,由于業(yè)務(wù)需求,需要實現(xiàn)微信自定義分享功能,所以項目中集成微信JS-SDK。微信JS-SDK是微信公眾平臺面向網(wǎng)頁開發(fā)者提供的基于微信內(nèi)的網(wǎng)頁開發(fā)工具包。通過使用微信JS-SDK,網(wǎng)頁開發(fā)者可借助微信高效地使用拍照、選圖、語音、...
摘要:在微信開發(fā)者工具中調(diào)試和一定要正確域名一定是備案的綁定域名需要的放在服務(wù)器上的位置一定要正確參考微信公眾號開發(fā)文檔 node微信公眾號開發(fā) 概覽 key value 項目名稱 node微信公眾號開發(fā) 項目描述 使用node編寫接口,前后端分離獲取簽名數(shù)據(jù) 開發(fā)者 leinov 發(fā)布日期 2018-11-07 倉庫 github地址 安裝&使用 下載 gi...
摘要:在實際開發(fā)中,無論是做端端還是微信公眾號等類型的項目的時候,或多或少都會涉及到微信相關(guān)的開發(fā),最近公司項目要求實現(xiàn)微信網(wǎng)頁授權(quán),并獲取微信用戶基本信息的功能及微信分享的功能,現(xiàn)在總算完成了,但開發(fā)過程中遇到好幾個坑。 在實際開發(fā)中,無論是做PC端、WebApp端還是微信公眾號等類型的項目的時候,或多或少都會涉及到微信相關(guān)的開發(fā),最近公司項目要求實現(xiàn)微信網(wǎng)頁授權(quán),并獲取微信用戶基本信息的...
摘要:在實際開發(fā)中,無論是做端端還是微信公眾號等類型的項目的時候,或多或少都會涉及到微信相關(guān)的開發(fā),最近公司項目要求實現(xiàn)微信網(wǎng)頁授權(quán),并獲取微信用戶基本信息的功能及微信分享的功能,現(xiàn)在總算完成了,但開發(fā)過程中遇到好幾個坑。 在實際開發(fā)中,無論是做PC端、WebApp端還是微信公眾號等類型的項目的時候,或多或少都會涉及到微信相關(guān)的開發(fā),最近公司項目要求實現(xiàn)微信網(wǎng)頁授權(quán),并獲取微信用戶基本信息的...
閱讀 2917·2021-09-22 15:43
閱讀 5234·2021-09-06 15:02
閱讀 891·2019-08-29 13:55
閱讀 1729·2019-08-29 12:58
閱讀 3124·2019-08-29 12:38
閱讀 1294·2019-08-26 12:20
閱讀 2307·2019-08-26 12:12
閱讀 3381·2019-08-23 18:35