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。
编程语言
- 甘肃哪有关键词排名优化购买方式有哪些
- 甘肃SEO如何做网站优化
- 河南seo关键词优化怎么做电话营销
- 北京SEO优化如何做QQ群营销
- 来宾百度关键词排名:提升您网站曝光率的关键
- 卢龙关键词优化:提升您网站排名的策略与技巧
- 山东网站优化的注意事项有哪些
- 四川整站优化怎样提升在搜索引擎中的排名
- 疏附整站优化:提升网站性能与用户体验的全新
- 海南seo主要做什么工作售后服务要做到哪些
- 荣昌百度网站优化:提升您网站的搜索引擎排名
- 河北seo网站排名关键词优化如何做SEO
- 江西优化关键词排名推广售后保障一般有哪些
- 古浪SEO优化:提升你的网站可见性
- 西藏网站排名优化怎么把网站排名在百度首页
- 如何提升阳东百度快照排名:详尽指南