微信公众号开发之token认证 Nodejs版

为什么弄微信服务号认证

我打算给我的极客猿导航加个公众号扫码登录,期间我还认证了个企业的订阅号,没有考虑清楚微信支付问题,实验了一下后期迁移账号还需要重新缴纳300元,我。。。

我重新注册了个服务号,缴纳了认证的300元,得到了我想要的所有权限,包含了微信支付,公众号关注登录,还有分享,这几点是最关键的。

关于微信公众号的token认证

公众号开发第一步就是绑定Token,Token认证相当于把我们的公众号和服务器关联起来,只有Token认证成功了我们的服务器才能接收到来自公众号的消息

关于 token 认证,官方只给出了php,python,java等主流后端语言的示例(怎么?Nodejs不配有示例吗?),我使用的是eggjs框架,具体token认证的代码如下:

import { Application } from 'egg';

const crypto = require('crypto');

export default class WechatController {

    async index(ctx) {

        const query = ctx.request.query;

        const signature = query.signature;

        const timestamp = query.timestamp;

        const nonce = query.nonce;

        const echostr = query.echostr;

        if (await this.check(timestamp, nonce, signature, 'token')) {

            ctx.body = echostr;

        } else {

            ctx.body = 'It is not from weixin';

        }

    }

    async check(timestamp, nonce, signature, token) {

        const tmp = [token, timestamp, nonce].sort().join('');

        const currSign = crypto.createHash('sha1').update(tmp).digest('hex');

        return (currSign === signature);

    }

}

将代码中的 token 替换成自己设置的就好了。

具体配置可以打开公众号后台 -> 基本配置 -> 服务器配置,填写服务器的 URL 和 自己设置的 Token,EncodingAESKey 随机生成,消息加解密方式 填 明文模式即可。

配置完成后,你还需要到公众号后台 -> 公众号设置 -> 功能设置中,绑定一下网页授权域名,不然会出现扫码关注公众号登录会报错。

本文系作者 @ 原创发布在 极客猿小兵的博客。未经许可,禁止转载。


极客猿小兵 » 微信公众号开发之token认证 Nodejs版

发表回复