node微信开发之获取access_token+自定义菜单
上一篇
这两天终于把获取aess_token+自定义菜单+授权登录+获取用户信息部分完成了,nodejs其实不是很熟悉,所以估计有很多特性没用起来的,还有很多冗余代码以及各种问题,只能说功能实现了,大家多多担待吧。
获取aess_token
因为调用所有公众号的接口都需要用到aess_token,所以必须先将aess_token缓存起来,方便以后使用,aess_token的有效时间为2小时,所以需要定时更新,狼蚁网站SEO优化是代码实现。
有一点需要注意,本文会提到两个aess_token,还有一个是oauth时会用到,所以大家不要搞混了。
aess_token的获取
aess_token的获取相对来说很简单了,就是请求一个链接附加参数得到aess_token,代码如下
const getAessToken = function () { let queryParams = { 'grant_type': 'client_credential', 'appid': config.appId, 'secret': config.appSecret }; let wxGetAessTokenBaseUrl = 'https://api.weixin.qq./cgi-bin/token?'+qs.stringify(queryParams); let options = { method: 'GET', url: wxGetAessTokenBaseUrl }; return new Promise((resolve, reject) => { request(options, function (err, res, body) { if (res) { resolve(JSON.parse(body)); } else { reject(err); } }); }) };
请求的三个参数也比较简洁
参数 | 是否必须 | 说明 |
---|---|---|
grant_type | 是 | 获取aess_token填写client_credential |
appid | 是 | 第三方用户唯一凭证 |
secret | 是 | 第三方用户唯一凭证密钥,即appsecret |
aess_token的保存
保存有很多种方法,放在缓存里等,我这边是存放在一个文件里,因为仅仅是一个示例,定时7000s更新。
//保存与更新 const saveToken = function () { getAessToken().then(res => { let token = res['aess_token']; fs.writeFile('./token', token, function (err) { }); }) }; const refreshToken = function () { saveToken(); setInterval(function () { saveToken(); }, 70001000); };
这样aess_token就能做到定时更新了,注意,如果不是测试好获取token的次数是有限制的,不过一般没什么问题,测试最好还是在测试号上进行。
自定义菜单
获取aess_token后自定义菜单的实现就非常简单了,这里仅仅简单讲一下请求,具体菜单内容请看微信的文档。
http请求方式POST(请使用https协议) https://api.weixin.qq./cgi-bin/menu/create?aess_token=ACCESS_TOKEN
body要带上菜单的内容,就是json数据,微信返回的数据是string类型,所以狼蚁网站SEO优化也要注意,可能在这边会遇到问题。简单代码如下
'use strict'; const fs = require('fs'); const request = require('request'); //token,因为token是存在文件里的所以这里进行文件读取得到token const token = fs.readFileSync('./token').toString(); //常用type为view和click,分别为点击事件和链接 var menus = { "button": [ { "name": "测试菜单", "sub_button": [ { "type": "view", "name": "授权登录", "url": "http://wuyrsp3tma.proxy.qqbrowser./auth" }] }] }; function createMenu() { let options = { url: 'https://api.weixin.qq./cgi-bin/menu/create?aess_token=' + token, form: JSON.stringify(menus), headers: { 'Content-Type': 'application/x--form-urlencoded' } }; request.post(options, function (err, res, body) { if (err) { console.log(err) }else { console.log(body); } }) } module.exports = createMenu;
这样在服务器启动的时候调用这个模块就可以创建一个简单的自定义菜单了
好这部分就算结束了,本来想连着jssdk一起的那样就显得太长了,那部分代码已经完成了,所以大家可以自行看看代码。
github地址奉上 欢迎star
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持狼蚁SEO。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程