手机版

节点微信开发access_token自定义菜单

时间:2021-08-26 来源:互联网 编辑:宝哥软件园 浏览:

自动回复的实现

这两天,我们终于完成了获取access_token自定义菜单授权和登录获取用户信息的部分。nodejs对它不是很熟悉,所以估计有很多功能没用,冗余代码多,各种问题也多。只能说功能已经实现了,大家忍一忍吧。

获取访问令牌

因为调用微信官方账号的所有接口都需要access_token,所以必须缓存access_token以备后用。access_token的有效时间为2小时,因此需要定期更新。下面是代码实现。

需要注意的一点是,本文将提到两个access_token,其中一个将在使用oauth时使用,所以不要混淆。

获取访问令牌

获取access_token相对简单,即请求一个链接来附加参数以获取access_token。代码如下:

const getAccessToken=function(){ let query params={ ' grant _ type ' : ' client _ credential ',' appid': config.appId,' secret ' : config . appsecret };让wxgetaccesstokenbseurl=' https://API . weixin . QQ.com/CGI-bin/token '?QS . stringify(query params);let options={ method: 'GET ',URL : wxgetaccesstokenbaserl };返回新的Promise((resolve,reject)={ request(选项,函数(err,res,body){ if(RES){ resolve(JSON . parse(body));} else { reject(err);} });})};请求的三个参数也很简洁:

参数必须指明grant_type是否为access_token,填写client_credential appid是第三方用户的唯一凭证,secret是第三方用户的唯一凭证密钥,即appsecret access_token的存储。

有很多方法可以保存,比如放入缓存等。我把它存储在这里的一个文件中,因为它只是一个例子,在7000年定期更新。

//保存并更新const save token=function(){ getaccesstoken()。然后(RES={ lettoken=RES[' access _ token '];fs.writeFile('。/token ',token,function(err){ });})};const RefreshToken=function(){ SaveToken();setInterval()函数(){ SaveToken();}, 7000*1000);};这样,access_token可以定期更新。注意,如果测试不好,获取token的次数是有限制的,但一般没有问题,最好在测试号上测试。

自定义菜单

获取access_token后,自定义菜单的实现非常简单。在这里,我们将简单地谈谈请求。具体菜单内容请参考微信文档。Http请求模式:POST(请使用https协议)https://api.weixin.qq.com/cgi-bin/menu/create? ACCESS _ TOKEN=ACCESS _ TOKEN

但是正文要带菜单的内容,也就是json数据,但是微信返回的数据是字符串类型的,所以我们也要注意以下几点,这里可能会遇到问题。简单的代码如下:

使用“严格”;const fs=require(' fs ');const request=require(' request ');//token,因为token存在于文件中,所以在这里读取文件以获取token const token=fs。readfilesync('。/token ')。tostring();//常见的类型有view和click,分别是click事件和link varmenus={ ' button ' :[{ ' name ' : ' test menu ',' sub _ button ' :[{ ' type ' 3360 ' view ',' name' :' authorized login '。URL ' : ' http://wuyrsp 3 TMA . proxy . QQ browser . cc/auth ' }]} };函数create menu(){ let options={ URL : ' https://API . weixin . QQ.com/CGI-bin/menu/create?access_token=' token,form: JSON.stringify(菜单),header RS : { ' Content-Type ' : ' application/x-www-form-URL encoded ' } };request.post(选项,函数(err,res,body){ if(err){ console . log(err)} else { console . log(body);} })} module . exports=CreateMenu;通过这种方式,您可以在服务器启动时调用此模块来创建一个简单的自定义菜单:

好了,即使这部分结束了,本来是打算用jssdk连接的,但是那样会太长,但是那部分代码已经完成了,可以自己看代码了。

Github地址:https://github.com/xiadd/shorthand欢迎明星

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:节点微信开发access_token自定义菜单是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。