Nodejs 接入 公众号【逗比版】

剪发的Tony 2018-08-14 12:08:48 ⋅ 657 阅读

Nodejs 接入 公众号

需求:
Boss: 我们要接入公众号,你看下文档对接下。
Me: 🆗

然后,可能因为对腾讯的反感,加之网上对腾讯的吐槽,怀着愤世嫉俗的态度胡乱的找资源,看方案,



然后


然后 想着还得早点回去睡觉,沉下心赶紧完成任务。

其实有些东西,做过才发现也就那么回事。


总的步骤明确后,其实按部就班的来就行了,简单

第一步 生成测试账号

扫下二维码,生成测试账号

就这样获取到了APPID Secret

第二步 配置接口信息

说好的万事开头难,这就来了,这个步骤是个问题。
请注意

原料列表

1. 外网可以访问的一个接口,端口号80、443
2. 写代码
3. 写代码
疑问: 本地起端口可以吗?

可以,但你需要内网穿透,比如花生壳, 6块那个就不行,真的不行🚫,因为不给提供80、443,只能自行解决了。比如在服务器上配置下、比如买个别的厂商的。

疑问: 为啥要80、443?

人家规定的

疑问: 要这个接口干啥?

这个接口是添加配置信息的时候,微信调用的,验证下是否合规,如何判断合规,你需要在接口里写代码,符合标准

疑问: 什么代码??

比如你直接填www.baidu.com, 就不行,因为,这个接口不是针对微信调用的,返回结果微信不认识,所以你就添加不了。

正确的代码是啥??

// 没错query 就是微信调用该接口是传过来的参数,对比下就可以
public static async configWechat(query: any{
        const { signature, timestamp, echostr, nonce } = query;
// 与微信后台配置的token一致
        const token = "******";
        const aesKey = "*******";
        let tmpArray = new Array();
        tmpArray = [nonce, timestamp, token].sort();
        const sha_1 = crypto.createHash("sha1");
        sha_1.update(tmpArray.join(""));
        const result = sha_1.digest("hex");
        if (result === signature) {
            return echostr;
        } else {
            return { code: -1, msg: "fail" };
        }
    }
疑问: 有啥注意事项吗?

这个问题好,返回值记得一定直接要返回echostr,别加别的返回值。

不要问我怎么知道的!


配置信息添加成功

  1. JS接口安全域名配置太简单了,直接填域名就好了

  2. 还有一步配置下就好了


第三步 获取code

这不是前端获取的吗??

对的,但是,你调试得用。所以如果简单获取code是一个问题。

步骤

1. 下载微信开发者工具;
2. 扫描二维码登录,选公众号;
3. 看到上边的那个条了吧,把下边的链接粘贴上去;

链接

https://open.weixin.qq.com/connect/oauth2/authorize?appid={{appid}}&redirect_uri={{URL}}&response_type={{code}}&scope={{snsapi_base}}&state=123#wechat_redirect


  1. appid: 你有

  2. URL:微信控制台,你已经配置好了

  3. code: 就是code

  4. scope: snsapi_base不需要用户点击授权,

放到里边就获取到code了。


第三步 获取Token

前端提交code,后端根据code获取token

// 获取token openId
    public static async getTokenOpenId(code: string) {
        try {
            console.log(code);
            const AppId = config.appId;
            const Secret = config.sceret;
            const url = `https://api.weixin.qq.com/sns/oauth2/access_token?appid=${AppId}&secret=${Secret}&code=${code}&grant_type=authorization_code`;
            let { body: result } = await utils.Request.get(url);
            result = JSON.parse(result);
            console.log(result);
            return result;
        } catch (e) {
            console.log(e);
            return "";
        }
    }

没了,就这万事开头难的结束了。

不过还有更多的坑在前路,风里雨里的等着你。
祝好!



全部评论: 0

    我有话说:

    2019优质技术公众汇总

    推荐几款技术公众新秀

    Nodejs视频服务器 切片ffmpeg

    Node 视频服务器 切片ffmpeg

    Node模块之Events模块(五)

    Node模块之Events模块(五)

    Node实战篇:Express--jade模板引擎(七)

    Jade(Pug) — Node Template Engine,一个高性能的模板引擎,专为 Node 而做......

    Node模块之fs模块(六)

    屏幕快照 2017-08-08 上午10.53.21.png 第一部分 概述 Node.js 提供一组类似UNIX(POSIX)标准的文件操作API,Node.js中操作文件的模块是fs(File

    Node实战篇:Express路由(三)

    Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。

    2018年8个技巧来构建更好的Node.js应用程序

    2018年8个技巧来构建更好的Node.js应用程序

    Node 模块之 util URL queryString path(八)

    第一部分 util util是一个Node.js核心模块,util模块设计的主要目的是为了满足Node内部API的需求。其中包括:格式化字符串、对象的序列化、实现对象继承等常用方法。要使用util

    Nodejs 搭建https服务器

    ----“安全套接层”。它是在上世纪90年代中期,由网景公司...

    NodeJS 10.5.0 中的线程:实用介绍

    几天前,Node.js版本10.5.0发布,其中包含的主要功能之一是添加了线程支持。

    Node初识与配置安装(一)

    第一. JavaScript简述 1992年, 第一个客户端脚本语言ScriptEase诞生, 由Nombas公司开发;JavaScript的首秀是在1995年,JScript 的诞生成为

    Node异步式I/O和异步式编程(三)

     Node.js 最大的特点就是异步式 I/O(或者非阻塞I/O)与事件紧密结合的编程模式。 第一部分: I/O 1.阻塞I/O与非阻塞I/O概念 1.1阻塞I/O(同步I/O) 线程在

    Node实战篇:Nodejs 链接 Mariadb 实例

    MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL

    为什么很多大公司选择使用 Node.js 做 Web 后端?

      大佬们问一下,为什么大的公司要用Node.js 做web后端?并且Node 还要调用Java做数据落地?在网上看了一些帖子,发现很多大厂都是这样做,我们公司的项目也是这样的,但是在开发

    TypeScript Nodejs 项目结构

    新旧交替新事物代替旧事物无外乎旧事物太陈旧。JS动态软类型语言,便利的同时也带来了很多弊端,随着...

    TypeScript Nodejs 项目结构

    1. 新旧交替 新事物代替旧事物无外乎旧事物太陈旧。 JS动态软类型语言,便利的同时也带来了很多弊端,随着项目的增大,加上没有注释,你完全会懵逼。 可以看下网上汇总的错误信息,有多少个是类型错误引起的 图为rollbar统计的数千个项目中数...

    Node模块(四)

    模块化分工、各司其职

    Node包管理NPM(二)

    NPM是什么? [NPM官网](https://docs.npmjs.com/)给出解释如下: ``` Use npm to install, share, and distribute code; manage dependencies i...

    Nodejs实用技巧之-Exceljs

    今天我们就在此介绍下exceljs的基本使用,应该可以满足我们大部分的需求。