获取token,本着两个原则,

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

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

b、超过,再获取刷新;

2、没有token获取刷新token;

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

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

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

   function getToken(appid, appsecret, cb) {
WeChatAccessToken.findOne({appid: appid}, function (err, token) {
if(token) {
var difference = parseInt(new Date().getTime() / 1000) - token.at;
if (difference > 7100) refreshToken(appid, appsecret, function(data, err) { cb(data, err); });
else cb(token, null);
} else refreshToken(appid, appsecret, function(data, err) { cb(data, err); });
});
} function refreshToken(appid, appsecret, cb) {
var access_token_api = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
var url = access_token_api.replace('APPID', appid).replace('APPSECRET', appsecret); // 参考请求: http://localhost:7000/wechat/ticket?appid=wx8160a61c2d53fb74&appsecret=aa2c953465334823e20090156527a957
request.get(url, function (error, response, body) {
if (body) {
WeChatAccessToken.findOne({appid: appid}, function (err, token) {
if (!token) token = new WeChatAccessToken();
var data = JSON.parse(body); token.appid = appid;
token.access_token = data.access_token;
token.expires_in = data.expires_in;
token.at = parseInt(new Date().getTime() / 1000);
token.save(function (err) { cb(token, err); });
});
} else cb(null, error);
});
}

仔细研读,getToken和refreshToekn方法;

解析微信node开发;拿token的更多相关文章

  1. 微信开发-ACCESS TOKEN 过期失效解决方案

    微信开发-ACCESS TOKEN 过期失效解决方案 起因:因为access_token的重要性,开发过微信的都知道,但是他有自己的生命周期,官方解释为:"有效期为7200秒",一 ...

  2. node.js解析微信消息推送xml格式加密的消息

    之前写过一个解密json格式加密的,我以为xml的和json的差不多,是上上个星期五吧,我的同事也是在做微信公众号里面的消息推送解密,发现好像只能使用xml加密格式的发送到服务器,我们去年也做过企业微 ...

  3. 【转】微信公众开发URL和token填写详解

    很多人不明白微信公众号开发者中心服务器配置里面的url和token是什么,不会填写.看了教程也不理解是什么,本文详述一下这个问题. 第一步:作为一名微信公众号开发者,别人进入你的微信公众号,肯定会看见 ...

  4. 微信公众开发URL和token填写详解

    微信公众开发URL和token填写详解 方法/步骤     作为一名微信公众号开发者,别人进入你的微信公众号,肯定会看见某些网页,或者给你发某些信息,你需要实时自动回复,所以你需要一个24小时为用户服 ...

  5. .net之微信企业号开发(三) 回调模式的接口开发

    一.前言 微信企业号应用中,有两种模式,一种是普通模式,这种模式只能进行简单网页链接,以及发送固定的消息.为了可以让企业号的用户更好的与应用交互,微信提供了回调模式,这种回调模式的可以将用户发送给微信 ...

  6. .net之微信企业号开发(二) 企业号人员身份认证与开发

    前言 这里完全可以链接一个登录页面,让用户输入用户名密码进行登录的...2333 但是,这样所就完全失去了微信企业号的意义,本来进入微信企业号的时候,就已经对人员身份进行认证了,你这里再让别人登录,不 ...

  7. PHP微信支付开发实例

    这篇文章主要为大家详细介绍了PHP微信支付开发过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 PHP微信支付开发过程,分享给大家,供大家参考,具体内容如下 1.开发环境 Thinkphp 3. ...

  8. 【微信Java开发 --2】接入微信公众平台开发,配置自己的服务器,验证过程

    接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑好我们就开始:1.填写好我们的URL和Token[此处是已经通过验证的] ...

  9. Force.com微信企业号开发系列(一) - 启用二次验证

    微信于9月份推出企业号后引起了业界不小的反响,许多企业都在思索企业号将如何影响企业的运营,从本文开始,我将详细阐述微信企业号开发的相关知识,而本文将着重介绍如何实现更高安全机制的二次验证. 申请企业体 ...

随机推荐

  1. Delphi下获取IE的UserAgent的方法

    方法一:使用SHDocVw, MSHtml单元提供的一些方法利用浏览器的特性来获取. uses SHDocVw, MSHtml; function GetUserAgent: string;var   ...

  2. 本地拦截genymotion或者Android模拟器的网络请求

    我们在主机上面运行了Burp或者fiddler,那么代理已经监听在本机的8080端口了. 那么我们需要在模拟器中进行如下设置: 1.在设置中,长按当前连接的wifi网络,弹出如下: 2. 点击修改网络 ...

  3. [置顶] 【cocos2d-x入门实战】微信飞机大战之三:飞机要起飞了

    转载请表明地址:http://blog.csdn.net/jackystudio/article/details/11730601 不过明眼人一看就知道起飞的不是飞机,是背景,相对运动引起的错觉. 1 ...

  4. 2014第11周一word样式

    今天摸索使用了word的样式替换功能感觉不错,简单记录下: 1.将某一个样式的标题统一替换为另一样式,之前一般是格式化一个个找到标题设置格式, 今天才发现可以选中标题->在浮动框上单击样式或开始 ...

  5. 编程内功修炼之数据结构—BTree(二)实现BTree插入、查询、删除操作

    1 package edu.algorithms.btree; import java.util.ArrayList; import java.util.List; /** * BTree类 * * ...

  6. #include <iomanip>

    1 setfill 2 setprecision 3 setw 1 setfill setfill( 'c' ) 设填充字符为c ▲setfill(char c) 用法 : 就是在预设宽度中如果已存在 ...

  7. Gunner II(二分,map,数字转化)

    Gunner II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...

  8. ASP.NET mvc4 WEB API异常处理

    当一个web api抛出一个异常后 此异常会被转化成一个HTTP响应 错误代码为500的服务错误 但是如果你不想让客户端看到500的错误码 你也可以自定义错误码 如下代码当用户输入的ID没有与之相关的 ...

  9. Girl_iOS100天学iOS的第一天(规划)

    不好的开端. 只是还好,总算是開始. 今天一直在做项目中的某个模块,发现自己尽管工作了一段时间,但编码速度还是够慢的 >.< 探究其为什么慢的原因,还是由于自己对某些控件等基础的不熟悉,如 ...

  10. 设置IE兼容模式

    文件兼容性用于定义让IE如何编译你的网页.此文件解释文件兼容性,如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式. 前言 为了帮助确保你的网页在所有未来的IE版本都有一致的外观,IE ...