Nodejs 对接公众号【第一难】

2018-08-14  本文已影响75人  simuty

Nodejs 接入 公众号

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

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

image.png

然后

image.png

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

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

image.png

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

第一步 生成测试账号

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

image.png

就这样获取到了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,别加别的返回值。

不要问我怎么知道的!

image.png

配置信息添加成功

  1. JS接口安全域名配置太简单了,直接填域名就好了
  2. 还有一步配置下就好了
image.png

第三步 获取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了。

image.png

第三步 获取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 "";
        }
    }

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

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

上一篇 下一篇

猜你喜欢

热点阅读