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
00
相似问题