手机版

nodejs微信开发访问指南

时间:2021-08-26 来源:互联网 编辑:宝哥软件园 浏览:

最近接了微信开发。之前的微信官方账号是用flask开发的,所以最近想用nodejs重写。这些是记录。一边写代码一边写这篇文章。

因为我对nodejs不是很熟悉,只是新手。请指出任何错误。

源代码将在文章的最后发布。微信官方账号部署在leancloud,这里将介绍leancloud的云引擎,方便部署。

本文的这一部分涉及的代码不多,但介绍了工具和访问指南。

内部网渗透

由于微信开发的端口必须是80个(最近好像增加了443个),所以需要使用内网渗透工具。我个人使用的是qq浏览器微信调试工具。

我也推荐这个,毕竟一家人。但是还有其他选择:

花生壳这个速度还可以,但是路由器这边只有窗口客户端可以扔东西,我还没有扔深。

Nat123类似花生壳,但速度不是很强。经常被误解。据说是免费的,但是需要预收几块钱,不是很推荐。

Ngrok是一个开源软件,可以部署在服务器上,也可以现成使用。其实,qq浏览器的微信调试就是基于此。是比较好用的。

数据存储

事实上,我还没有接触过其他leancloud服务,也无法对它们进行比较。另一个是heroku,但在中国的访问速度是感人的。leancloud应该是一个类似于parse的服务(其实我对hhhh不是很了解),但是它也提供了一个托管web的云引擎。包括python和nodejs,介绍了nodejs的引擎。如果您想开始使用云引擎,请参见leancloud云引擎。毕竟比我说的好多了。对于个人开发者来说,leancloud是免费的,没有什么大的限制,但是最近好像发了实名认证,不过没有认证好像也没什么问题。但是对于受访者来说,如果应用程序没有请求,那就是睡眠,所以如果应用程序打不开,只要试两次,很有可能就是睡眠。

常用命令

Lean新建新项目lean app添加[appname] [appid]将项目关联到leancloud云引擎lean up启动服务lean deploy部署应用(似乎付费用户部署到测试环境)lean发布部署到开发环境(免费用户不需要)

云引擎简介

进入控制台后,如图所示:

存储是一个数据库,每个功能都如其名。暂时不需要的一些功能就不提了。

主要是云引擎选项,你需要输入设置来配置域名。

资料库

Leancloud的数据库是半禁用的mongo,基本够用了。文件在这里。js数据开发

进入微信官方账号

我这里用的是微信官方账号测试号,因为个人申请的订单号功能严重缺失。

先看微信文档

填写服务器配置

在上面的界面配置信息中,url是你的服务部署的地方,图中的url是微信调试工具生成的,所以有些混乱。代币可以随意填写。注意以下几点,保持好。

验证服务器地址的有效性

这是代码部分。首先转到目录结构:

应用程序目录包含业务逻辑代码。

Config.js存储相关配置,包括微信微信官方账号的appId和Token

module . exports={ ' token ' : ' your token ',//token ' appid ' : ' your ppid '在配置中,//appid' appsecret' : '你的appsecret '在配置中};注:此部分引用自微信公众平台文档

开发者提交信息后,微信服务器会向填写的服务器地址URL发送GET请求,GET请求携带的参数如下表所示:

通过验证签名来验证请求(以下是验证方法)。如果确认GET请求来自微信服务器,请原样返回echostr参数内容,那么访问就会生效,成为开发者成功,否则访问就会失败。加密/验证过程如下:1)三个参数token、timestamp和nonce按字典顺序排序;2)将三个参数的字符串拼接成一个字符串进行sha1加密;3)开发者获得的加密字符串可以与签名进行比较,以识别该请求来自微信

这部分代码如下:

const crypto=require(' crypto ');const path=require(' path ');const URL=require(' URL ');//导入configconst config=require('././config ');//执行sha1加密函数sha1(str){ var shasum=crypto . create hash(' sha1 ');shasum . update(str);str=shasum . digest(' hex ');返回字符串;}函数微信验证(req,RES){ var query=URL . parse(req . URL,true)。查询;var签名=query.signaturevar echostr=query.echostrvar timestamp=查询[' timestamp '];var nonce=query.noncevar reqArray=[nonce,时间戳,config . token];//字典排序数组reqarray . sort();var sortStr=ReqArray . join(' ');//连接数组var sha1Str=sha1(sortStr);if(signature===sha1Str){ RES . end(echostr);} else { RES . end(' false ');控制台.日志('授权失败!');}}module.exports=微信验证;我相信代码总是比我说得更清楚。首先,获取请求url中的四个参数,对字典中的随机数、时间戳和令牌进行排序,即Array.sort(),然后拼接字符串,并用sha1进行加密。如果结果等于签名,就成功了。(顺便说一句,其实直接返回echostr是可以成功的,但是后来的请求就不好处理了?)。

这样,访问应该被认为是成功的。

首先,github地址呈现:https://github.com/xiadd/shorthand

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:nodejs微信开发访问指南是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。