博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解析微信node开发;拿token
阅读量:7026 次
发布时间:2019-06-28

本文共 1752 字,大约阅读时间需要 5 分钟。

获取token,本着两个原则,

1、先查询是否有token,有的话判断其时间是否与上一次请求时间差是否超过7100;

a、不超过,直接用得到;

b、超过,再获取刷新;

2、没有token获取刷新token;

a、拼接地址,request.get请求token;将请求来的token保存到数据库更新,此处有技巧,

1 if (!token) token = new WeChatAccessToken();

此句话为第一次请求时,生成一个token,将获得的数据,存储到token里面;保存,并返回;

1   function getToken(appid, appsecret, cb) { 2     WeChatAccessToken.findOne({appid: appid}, function (err, token) { 3       if(token) { 4         var difference = parseInt(new Date().getTime() / 1000) - token.at; 5         if (difference > 7100) refreshToken(appid, appsecret, function(data, err) { cb(data, err); }); 6         else cb(token, null); 7       } else refreshToken(appid, appsecret, function(data, err) { cb(data, err); }); 8     }); 9   }10 11   function refreshToken(appid, appsecret, cb) {12     var access_token_api = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";13     var url = access_token_api.replace('APPID', appid).replace('APPSECRET', appsecret);14 15     // 参考请求: http://localhost:7000/wechat/ticket?appid=wx8160a61c2d53fb74&appsecret=aa2c953465334823e20090156527a95716     request.get(url, function (error, response, body) {17       if (body) {18         WeChatAccessToken.findOne({appid: appid}, function (err, token) {19           if (!token) token = new WeChatAccessToken();20           var data = JSON.parse(body);21 22           token.appid = appid;23           token.access_token = data.access_token;24           token.expires_in = data.expires_in;25           token.at = parseInt(new Date().getTime() / 1000);26           token.save(function (err) { cb(token, err); });27         });28       } else cb(null, error);29     });30   }

仔细研读,getToken和refreshToekn方法;

 

转载于:https://www.cnblogs.com/suoking/p/5106313.html

你可能感兴趣的文章
阿里云表格存储TableStore全新升级 打造统一在线数据存储平台 ...
查看>>
「镁客·请讲」中芯芯片陈智维:国内芯片没有创新可言,但大家做的是从无到有 ...
查看>>
【直播预告】阿里技术专家天樵:基于JVM的脚本语言开发、运用实践
查看>>
第二十章:异步和文件I/O.(十八)
查看>>
win10应用程序添加到开机启动项的两种解决办法
查看>>
一招教你无阻塞读写Golang channel
查看>>
阿里有群姑娘,是马老师的师兄,还是逍遥子的学长……
查看>>
Docker 在 Coding WebIDE 项目中的运用
查看>>
ATtiny85 制作迷你小游戏机
查看>>
jQuery限制“Text-Area”域中的字符的个数
查看>>
bboss框架配置监控介绍
查看>>
Fastify 2.0.1 和 1.14.3 发布,极速 Node.js Web 框架
查看>>
和平之翼代码生成器SMEU版 4.0.0 Beta5 宝船公布
查看>>
Android--进程间通信(Binder)
查看>>
Spring Boot 实现json和jsonp格式数据接口
查看>>
八大排序的Java实现
查看>>
练字之《短歌行》
查看>>
Spring+quartz cron表达式(cron手册官方)完美理解
查看>>
性能分析系列-小命令保证大性能
查看>>
BottledWater-PG:PostgreSQL集成Kafka的实时数据交换平台
查看>>