博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信开发实践(一):使用JS-SDK实现自定义分享 Ⅰ
阅读量:7094 次
发布时间:2019-06-28

本文共 2231 字,大约阅读时间需要 7 分钟。

hot3.png

刚好工作中需要在网页中对接微信的一些接口,以前没玩过,为了比较透彻地了解微信的授权流程以及各个参数的意义,就自己试着搭建了一下前后端的demo并记录下了详细的步骤。

微信测试是一个相当麻烦的事,因为他需要一个外网可以访问的服务器,如果公司里面没有专门给微信搭建一个测试服务,那么对前端来说,没有外网权限的微信调试就是一场噩梦。

下载和使用NATAPP

如何解决这个问题呢?可以去使用内网穿透工具,直接使自己的本机可以外网访问,我使用了一个叫NATAPP的工具,它还可以送你一个免费的备案过的二级域名。工具的用法非常简单,具体的用法参考官方文档。

通过运行natapp -authtoken=注册成功后获取的authtoken,就可以获得你的域名,比如26s4ag.natappfree.cc

配置微信测试号

接下来就可以开始微信公众号开发了,但是没有公众号怎么办,就算有了公众号,一些高级权限的接口也需要申请审核,我只是来测试的,干嘛要那么麻烦,微信团队很体贴,为每个微信提供了我们一个公众号的测试账号,这样无需公众号就可以直接体验和测试公众平台所有高级接口了。

进入“”绑定本人的微信来创建测试号。

① 在“接口配置信息”那一栏填入你的验证接口和token,以我为例url和token分别为 http://26s4ag.natappfree.cc/verifytest666 (目前无法保存配置,可以先放着,等下一步服务器和nginx配置完成)。

② 在“JS接口安全域名”填入你的域名:26s4ag.natappfree.cc

③ 点击“体验接口权限表”下的“网页服务“ > “网页帐号” > “修改”,填入授权回调域名:26s4ag.natappfree.cc

编写node后端测试接口

我这里的node后端使用express作为框架,如果你也打算使用这个,可以按照下面的步骤走:

① 进入E盘根目录,创建名为test的node项目:

> mkdir E:\\test> cd E:\test\> npm init -f> npm install express --save-dev

② 编写node express服务器

const crypto = require('crypto')const express = require('express')const app = express()const APP_ID = '测试号的APP_ID'const APP_SECRET = '测试号的APP_SECRET'const TOKEN = '手动填写的TOKEN'/** * 加密/校验流程如下: * 1)将token、timestamp、nonce三个参数进行字典序排序 * 2)将三个参数字符串拼接成一个字符串进行sha1加密 * 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信 */app.get('/verify', function (req, res) {  const timestamp = req.query.timestamp  const nonce = req.query.nonce  const shasum = crypto.createHash('sha1')  shasum.update([TOKEN, timestamp, nonce].sort().join(''))  const generatedSignature = shasum.digest('hex')  if (generatedSignature === req.query.signature) {  // 来自微信服务器    res.send(req.query.echostr)  } else {    res.send('fail')  }})// 启动服务器const server = app.listen(3000, function () {  const host = server.address().address  const port = server.address().port  console.log('server listening at %s:%s', host, port)})

③ 启动服务器:

> node 'E:\\test\express.js'

PS:express各个函数和命令具体的用法我就不赘述了,不了解的请参考。

配置nginx

由于我们的服务器是跑在3000端口,而“接口配置信息”里面只能访问80端口,所以我们需要使用nginx做一次请求转发:

server {    listen       80;    server_name  26s4ag.natappfree.cc;    location / {        proxy_pass   http://127.0.0.1:3000/verify;    }}

想要对nginx的配置有详细的了解,推荐看这篇。

这时候,就可以回到“接口配置信息”那里点击提交,如果提示“配置成功”就完成了所有的配置工作。

 

下一篇文章来说一下如何使用微信的JSSDK。

(下一篇:)

转载于:https://my.oschina.net/codingDog/blog/1516659

你可能感兴趣的文章
a common method to rotate the image
查看>>
测试计划
查看>>
深拷贝与浅拷贝
查看>>
textarea禁止拖动 滚动条隐藏
查看>>
Java下利用Jackson进行JSON解析和序列化
查看>>
Js用正则表达式验证字符串
查看>>
大疆农业专家在线空开课直播课件知识
查看>>
怎样快速搜索自己所需的资料?(90%的人不会使用此方法)[转]
查看>>
POJ_2411_Mondriaan's Dream_状态压缩dp
查看>>
694. Number of Distinct Islands - Medium
查看>>
Sencha Toucha 2.1 文件上传
查看>>
vue打包后出现的.map文件
查看>>
前端应用框架(三)
查看>>
多线程的死锁
查看>>
定时任务框架Quartz-(一)Quartz入门与Demo搭建
查看>>
css导航栏
查看>>
洛谷3195(HNOI2008)玩具装箱
查看>>
按行拆分文本文件与合并文本文件---I/O流---java
查看>>
offsetLeft,Left,clientLeft的区别
查看>>
parseInt()详解
查看>>