上一篇:自动回复的实现
这两天终于把获取access_token+自定义菜单+授权登录+获取用户信息部分完成了,nodejs其实不是很熟悉,所以估计有很多特性没用起来的,还有很多冗余代码以及各种问题,只能说功能实现了,大家多多担待吧。
获取access_token
因为调用所有公众号的接口都需要用到access_token,所以必须先将access_token缓存起来,方便以后使用,access_token的有效时间为2小时,所以需要定时更新,下面是代码实现。
有一点需要注意,本文会提到两个access_token,还有一个是oauth时会用到,所以大家不要搞混了。
access_token的获取
access_token的获取相对来说很简单了,就是请求一个链接附加参数得到access_token,代码如下:
const getAccessToken = function () { let queryParams = { 'grant_type': 'client_credential', 'appid': config.appId, 'secret': config.appSecret }; let wxGetAccessTokenBaseUrl = 'https://api.weixin.qq.com/cgi-bin/token?'+qs.stringify(queryParams); let options = { method: 'GET', url: wxGetAccessTokenBaseUrl }; return new Promise((resolve, reject) => { request(options, function (err, res, body) { if (res) { resolve(JSON.parse(body)); } else { reject(err); } }); })};
请求的三个参数也比较简洁:
参数 | 是否必须 | 说明 |
---|---|---|
grant_type | 是 | 获取access_token填写client_credential |
appid | 是 | 第三方用户唯一凭证 |
secret | 是 | 第三方用户唯一凭证密钥,即appsecret |
access_token的保存
保存有很多种方法,放在缓存里等,我这边是存放在一个文件里,因为仅仅是一个示例,定时7000s更新。
//保存与更新const saveToken = function () { getAccessToken().then(res => { let token = res['access_token']; fs.writeFile('./token', token, function (err) { }); })};const refreshToken = function () { saveToken(); setInterval(function () { saveToken(); }, 7000*1000);};
这样access_token就能做到定时更新了,注意,如果不是测试好获取token的次数是有限制的,不过一般没什么问题,测试最好还是在测试号上进行。
自定义菜单
获取access_token后自定义菜单的实现就非常简单了,这里仅仅简单讲一下请求,具体菜单内容请看微信的文档。
http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
新闻热点
疑难解答