zoukankan      html  css  js  c++  java
  • 解析微信node开发;拿token

    获取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=aa2c953465334823e20090156527a957
    16     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方法;

    坚持下去就能成功
  • 相关阅读:
    BZOJ2298: [HAOI2011]problem a
    BZOJ4066: 简单题
    BZOJ2131: 免费的馅饼
    Educational Codeforces Round 97 div2
    [SCOI2016]背单词
    [SCOI2015]情报传递(离线树状数组跑图)
    树上主席树(无代码,单纯谈思路的一篇水文)
    CF Round #679 div2赛后总结
    [SCOI2015]小凸解密码(平衡树、线段树做法)
    CF Round #677 div3 赛后总结
  • 原文地址:https://www.cnblogs.com/suoking/p/5106313.html
Copyright © 2011-2022 走看看