getAccessToken is not function

来源:2-6 第二天 票据 access_token 打开新世界大门

如果_0003

2016-08-11

'use strict';

var sha1 = require('sha1');

var Promise = require('bluebird');

var request = Promise.promisify(require('request'));

var prefix = "https://api.weixin.qq.com/cgi-bin/";

var api = {

    accessToken: prefix + 'token?grant_type=client_credential'

}


function Wechat(opts) {

    var that = this;

    this.appID = opts.appID;

    this.appSecret = opts.appSecret;

    this.getAccessToken = opts.getAccessToken;

    this.saveAccessToken = opts.saveAccessToken;


    this.getAccessToken().then(function(data) {

        try {

            data = JSON.parse(data);

        } catch (e) {

            return that.updateAccessToken();

        }


        if (that.isValidAccessToken(data)) {

            Promise.resolve(data);

        } else {

            return that.updateAccessToken();

        }

    }).then(function(data) {

        that.access_token = data.access_token;

        that.expires_in = data.expires_in;


        that.saveAccessToken(data);

    });


}

Wechat.prototype.isValidAccessToken = (data) => {

    if (!data || !data.access_token || !data.expires_in) {

        return false;

    }


    var access_token = data.access_token;

    var expires_in = data.expires_in;

    var now = (new Date().getTime());


    if (now < expires_in) {

        return true;

    } else {

        return false;

    }

};

Wechat.prototype.isValidAccessToken = function(data) {

    if (!data || !data.access_token || !data.expires_in) {

        return false

    }

    var access_token = data.access_token;

    var expires_in = data.expires_in;

    var now = (new Data().getTime());

    if (now < expires_in) {

        return true;

    } else {

        return false;

    }

}

Wechat.prototype.updateAccessToken = function() {

    var appID = data.appID;

    var appsecret = data.appsecret;

    var url = api.accessToken + '&appid=' + appID + '&secret=' + appsecret;

    return new Promise(function(resolve, reject) {

        request({ url: url, json: true }).then(function(response) {

            var data = response.body;

            var now = (new Data().getTime());

            var expires_in = now + (data.expires_in - 20) * 1000;

            data.expires_in = expires_in;

            resolve(data);

        })

    })

}


module.exports = function(opts) {

    var wechat = new Wechat(opts);

    return function*(next) {

        var token = opts.token;

        var signation = this.query.signation;

        var nonce = this.query.nonce;

        var timestamp = this.query.timestamp;

        var echator = this.query.echator;

        var str = [token, nonce, timestamp].sort().join('');

        var sha = new sha1(str);

        if (sha === signation) {

            this.body = echator + '';

        } else {

            this.body = "wrong bocy dddd  hhtt";

        }

    }

}


写回答

1回答

Scott

2016-08-12

Promise.resolve(data); 前面加 return

0
0

7天搞定Node.js微信公众号

Koa框架、ES2015新特性、MongoDB,开发微信公众号

1742 学习 · 787 问题

查看课程