国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

微信公眾平臺開發(fā)接入指南

luodongseu / 726人閱讀

摘要:在進(jìn)行微信公眾平臺開發(fā)之前,需要先接入微信公眾平臺。后續(xù)我也還會更新一些關(guān)于微信公眾平臺開發(fā)的文章,歡迎關(guān)注。

在進(jìn)行微信公眾平臺開發(fā)之前,需要先接入微信公眾平臺。具體的步驟在 公眾平臺開發(fā)者文檔-接入指南 已有詳細(xì)介紹,文檔中也提供了驗(yàn)證服務(wù)器的 PHP 示例代碼。

本文主要提供了 Node.js 版本的驗(yàn)證代碼,同時(shí)把步驟細(xì)化,讓開發(fā)者更方便地了解整個接入過程,對初學(xué)者更友好。

TL;DR

在微信公眾平臺后臺的 開發(fā)者中心/填寫服務(wù)器配置 頁面,配置好 URL 和 Token 后,復(fù)制下面的代碼,修改 Token,在服務(wù)器運(yùn)行,然后再在頁面上點(diǎn)擊提交即可進(jìn)行接入驗(yàn)證。

</>復(fù)制代碼

  1. // checkSignature.js
  2. /**
  3. * 整個驗(yàn)證步驟分為三步
  4. * 1. 將token、timestamp、nonce三個參數(shù)進(jìn)行字典序排序
  5. * 2. 將三個參數(shù)字符串拼接成一個字符串進(jìn)行sha1加密
  6. * 3. 開發(fā)者獲得加密后的字符串可與signature對比,標(biāo)識該請求來源于微信
  7. */
  8. const http = require("http");
  9. const url = require("url");
  10. const crypto = require("crypto");
  11. // Web 服務(wù)器端口
  12. const port = 3333;
  13. // 微信公眾平臺服務(wù)器配置中的 Token
  14. const token = "token";
  15. /**
  16. * 對字符串進(jìn)行sha1加密
  17. * @param {string} str 需要加密的字符串
  18. * @return {string} 加密后的字符串
  19. */
  20. function sha1(str) {
  21. const md5sum = crypto.createHash("sha1");
  22. md5sum.update(str);
  23. const ciphertext = md5sum.digest("hex");
  24. return ciphertext;
  25. }
  26. /**
  27. * 驗(yàn)證服務(wù)器的有效性
  28. * @param {object} req http 請求
  29. * @param {object} res http 響應(yīng)
  30. * @return {object} 驗(yàn)證結(jié)果
  31. */
  32. function checkSignature(req, res) {
  33. const query = url.parse(req.url, true).query;
  34. console.log("Request URL: ", req.url);
  35. const signature = query.signature;
  36. const timestamp = query.timestamp;
  37. const nonce = query.nonce;
  38. const echostr = query.echostr;
  39. console.log("timestamp: ", timestamp);
  40. console.log("nonce: ", nonce);
  41. console.log("signature: ", signature);
  42. // 將 token/timestamp/nonce 三個參數(shù)進(jìn)行字典序排序
  43. const tmpArr = [token, timestamp, nonce];
  44. const tmpStr = sha1(tmpArr.sort().join(""));
  45. console.log("Sha1 String: ", tmpStr);
  46. // 驗(yàn)證排序并加密后的字符串與 signature 是否相等
  47. if (tmpStr === signature) {
  48. // 原樣返回echostr參數(shù)內(nèi)容
  49. res.end(echostr);
  50. console.log("Check Success");
  51. } else {
  52. res.end("failed");
  53. console.log("Check Failed");
  54. }
  55. }
  56. const server = http.createServer(checkSignature)
  57. server.listen(port, () => {
  58. console.log(`Server is runnig ar port ${port}`);
  59. console.log("Start Checking...");
  60. });
填寫服務(wù)器配置

登錄進(jìn)入微信公眾平臺后臺管理頁面

然后進(jìn)入 基本配置 頁面

再然后選擇 修改配置,進(jìn)入到 填寫服務(wù)器配置 子頁面

URL 為已經(jīng)解析到你的服務(wù)器的域名,這里以 http://wechat.nodejh.com 這個二級域名為例

Token 隨意填寫即可

驗(yàn)證服務(wù)器地址的有效性

驗(yàn)證服務(wù)器地址的有效性,需要在域名對應(yīng)的服務(wù)器上運(yùn)行一段驗(yàn)證程序。該程序會接收上個步驟中的域名所發(fā)送的 HTTP 請求。

官方文檔提供了 PHP 的示例程序,下面是 Node.js 版本:

</>復(fù)制代碼

  1. // checkSignature.js
  2. /**
  3. * 整個驗(yàn)證步驟分為三步
  4. * 1. 將token、timestamp、nonce三個參數(shù)進(jìn)行字典序排序
  5. * 2. 將三個參數(shù)字符串拼接成一個字符串進(jìn)行sha1加密
  6. * 3. 開發(fā)者獲得加密后的字符串可與signature對比,標(biāo)識該請求來源于微信
  7. */
  8. const http = require("http");
  9. const url = require("url");
  10. const crypto = require("crypto");
  11. // Web 服務(wù)器端口
  12. const port = 3333;
  13. // 微信公眾平臺服務(wù)器配置中的 Token
  14. const token = "token";
  15. /**
  16. * 對字符串進(jìn)行sha1加密
  17. * @param {string} str 需要加密的字符串
  18. * @return {string} 加密后的字符串
  19. */
  20. function sha1(str) {
  21. const md5sum = crypto.createHash("sha1");
  22. md5sum.update(str);
  23. const ciphertext = md5sum.digest("hex");
  24. return ciphertext;
  25. }
  26. /**
  27. * 驗(yàn)證服務(wù)器的有效性
  28. * @param {object} req http 請求
  29. * @param {object} res http 響應(yīng)
  30. * @return {object} 驗(yàn)證結(jié)果
  31. */
  32. function checkSignature(req, res) {
  33. const query = url.parse(req.url, true).query;
  34. console.log("Request URL: ", req.url);
  35. const signature = query.signature;
  36. const timestamp = query.timestamp;
  37. const nonce = query.nonce;
  38. const echostr = query.echostr;
  39. console.log("timestamp: ", timestamp);
  40. console.log("nonce: ", nonce);
  41. console.log("signature: ", signature);
  42. // 將 token/timestamp/nonce 三個參數(shù)進(jìn)行字典序排序
  43. const tmpArr = [token, timestamp, nonce];
  44. const tmpStr = sha1(tmpArr.sort().join(""));
  45. console.log("Sha1 String: ", tmpStr);
  46. // 驗(yàn)證排序并加密后的字符串與 signature 是否相等
  47. if (tmpStr === signature) {
  48. // 原樣返回echostr參數(shù)內(nèi)容
  49. res.end(echostr);
  50. console.log("Check Success");
  51. } else {
  52. res.end("failed");
  53. console.log("Check Failed");
  54. }
  55. }
  56. const server = http.createServer(checkSignature)
  57. server.listen(port, () => {
  58. console.log(`Server is runnig ar port ${port}`);
  59. console.log("Start Checking...");
  60. });

因?yàn)轵?yàn)證要使用 80(HTTP) 端口或 443(HTTPS) 端口,而 Node.js 一般不直接監(jiān)聽 80 端口,所以需要使用 Nginx 或其他程序?qū)碜?http://wechat.nodejh.com 的請求轉(zhuǎn)發(fā)到 Node.js 程序端口如上面的 3333。關(guān)于 Nginx 的配置,可以看我之前寫的《使用 Ngnix 給 Node.js 應(yīng)用做反向代理》。

這里也順便給出該程序的 Nginx 配置

</>復(fù)制代碼

  1. upstream nodejs {
  2. server 127.0.0.1:3333;
  3. keepalive 64;
  4. }
  5. server {
  6. listen 80;
  7. server_name wechat.nodejh.com;
  8. # 日志
  9. access_log /var/log/nginx/wechat.nodejh.com.log;
  10. location / {
  11. proxy_set_header X-Real-IP $remote_addr;
  12. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  13. proxy_set_header Host $http_host;
  14. proxy_set_header X-Nginx-Proxy true;
  15. proxy_set_header Connection "";
  16. proxy_pass http://nodejs;
  17. }
  18. }

配置就緒之后,啟動驗(yàn)證程序

</>復(fù)制代碼

  1. $ node checkSignature.js
  2. Server is runnig ar port 3333
  3. Start Checking...

這樣,checkSignature.js 就會創(chuàng)建一個 3333 端口的服務(wù)。訪問 http://wechat.nodejh.com 這個域名的時(shí)候,Nginx 就會將請求轉(zhuǎn)發(fā)到 3333 端口。

在微信公眾平臺后臺管理的服務(wù)器配置頁面,點(diǎn)擊提交按鈕,就會填寫的 URL (這里是 http://wechat.nodejh.com)發(fā)送一個 HTTP 請求,并帶上 signature,timestamp,nonce,echostr 這四個參數(shù)。

啟動 checkSignature.js 后,在服務(wù)器配置頁面,點(diǎn)擊提交按鈕,就會開啟驗(yàn)證。

服務(wù)器端出現(xiàn)下面的結(jié)果,就說明驗(yàn)證成功。驗(yàn)證成功后,微信公眾平臺后臺會自動跳轉(zhuǎn)到 基本配置 頁面。

</>復(fù)制代碼

  1. # 服務(wù)端響應(yīng)...
  2. signature: 8fffb8f011d64819ec61105415114694bb03d392
  3. Sha1 String: 8fffb8f011d64819ec61105415114694bb03d392
  4. Check Success

然后就可以依據(jù)接口文檔實(shí)現(xiàn)業(yè)務(wù)邏輯了。

后續(xù)我也還會更新一些關(guān)于微信公眾平臺開發(fā)的文章,歡迎關(guān)注。

Github Issue: https://github.com/nodejh/nodejh.github.io/issues/24

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/91252.html

相關(guān)文章

  • nodejs微信開發(fā)---接入指南

    摘要:內(nèi)網(wǎng)穿透由于微信開發(fā)的端口必須是最近貌似增加了,所以一個內(nèi)網(wǎng)穿透工具還是很有必要的。我個人使用的是瀏覽器微信調(diào)試工具。若確認(rèn)此次請求來自微信服務(wù)器,請?jiān)瓨臃祷貐?shù)內(nèi)容,則接入生效,成為開發(fā)者成功,否則接入失敗。 首先github地址奉上:https://github.com/xiadd/shorthand 歡迎star?最近又拾起了微信開發(fā),之前的公眾號是用的flask進(jìn)行開發(fā)的,所以...

    LiangJ 評論0 收藏0
  • 【Node.js 微信公眾號實(shí)戰(zhàn)】1.Node.js 接入微信公眾平臺開發(fā)

    摘要:打開中文網(wǎng)文檔打開微信開發(fā)者文檔三接入微信公眾平臺創(chuàng)建項(xiàng)目首先我們在電腦的任意磁盤上創(chuàng)建文件夾,命名隨意,我這命名為隨后在文件夾中創(chuàng)建兩個文件一個是,另一個為。接入驗(yàn)證再次進(jìn)入微信公眾平臺在左側(cè)菜單點(diǎn)擊基本配置,如圖點(diǎn)擊修改配置。 一、寫在前面的話 ??Node.js是一個開放源代碼、跨平臺的JavaScript語言運(yùn)行環(huán)境,采用Google開發(fā)的V8運(yùn)行代碼,使用事件驅(qū)動、非阻塞和異...

    winterdawn 評論0 收藏0
  • 慕課網(wǎng)_《初識Java微信公眾開發(fā)》學(xué)習(xí)總結(jié)

    摘要:時(shí)間年月日星期五說明本文部分內(nèi)容均來自慕課網(wǎng)。本套課程介紹微信公眾號開發(fā),主要涉及公眾號介紹編輯模式介紹開發(fā)模式介紹等。慕課網(wǎng)是垂直的互聯(lián)網(wǎng)技能免費(fèi)學(xué)習(xí)網(wǎng)站。 時(shí)間:2017年08月11日星期五說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:https://github.com/zccodere/s...學(xué)習(xí)源碼:https://github...

    PrototypeZ 評論0 收藏0
  • Python爬蟲學(xué)習(xí)路線

    摘要:以下這些項(xiàng)目,你拿來學(xué)習(xí)學(xué)習(xí)練練手。當(dāng)你每個步驟都能做到很優(yōu)秀的時(shí)候,你應(yīng)該考慮如何組合這四個步驟,使你的爬蟲達(dá)到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲的設(shè)計(jì)方案,比如說。 (一)如何學(xué)習(xí)Python 學(xué)習(xí)Python大致可以分為以下幾個階段: 1.剛上手的時(shí)候肯定是先過一遍Python最基本的知識,比如說:變量、數(shù)據(jù)結(jié)構(gòu)、語法...

    liaoyg8023 評論0 收藏0
  • 微信小程序的筆記-流程記錄

    摘要:百度微信小程序進(jìn)入開發(fā)支持以及接入流程微信公眾平臺小程序首頁接入小程序接入指南小程序開發(fā)開發(fā)文檔小程序開發(fā)之簡易教程小程序開發(fā)之文檔小程序開發(fā)之官方教程小程序開發(fā)指南 百度微信小程序 showImg(https://segmentfault.com/img/remote/1460000015422248);進(jìn)入showImg(https://segmentfault.com/img/r...

    Muninn 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<