Skip to content

Commit c68fc67

Browse files
authored
refine the decryptMiniProgramUser (#52)
1 parent 884f32e commit c68fc67

File tree

3 files changed

+33
-34
lines changed

3 files changed

+33
-34
lines changed

lib/oauth.js

+17-15
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
'use strict';
22

33
var urllib = require('urllib');
4-
var wrapper = require('./util').wrapper;
54
var extend = require('util')._extend;
65
var querystring = require('querystring');
6+
7+
var wrapper = require('./util').wrapper;
78
var WxBizDataCrypt = require('./wx_biz_data_crypt');
89

910
var AccessToken = function (data) {
@@ -326,16 +327,10 @@ OAuth.prototype._getUser = function (options, accessToken, callback) {
326327
* @param {Object} options 需要解密的对象
327328
* @param {String} options.encryptedData 从小程序中获得的加密过的字符串
328329
* @param {String} options.iv 从小程序中获得的加密算法初始向量
329-
* @param {Function} callback 回调函数
330330
*/
331-
OAuth.prototype.decryptMiniProgramUser = function (options, callback) {
332-
try {
333-
var decrypter = new WxBizDataCrypt(this.appid, options.sessionKey);
334-
var user = decrypter.decryptData(options.encryptedData, options.iv);
335-
}catch (e) {
336-
return callback(new Error('error occurred when trying to decrypt mini-program user data'));
337-
}
338-
return callback(null, user);
331+
OAuth.prototype.decryptMiniProgramUser = function (options) {
332+
var decrypter = new WxBizDataCrypt(this.appid, options.sessionKey);
333+
return decrypter.decryptData(options.encryptedData, options.iv);
339334
};
340335

341336
/**
@@ -480,11 +475,18 @@ OAuth.prototype.getUserByCode = function (options, callback) {
480475
return callback(err);
481476
}
482477
var sessionKey = result.data.session_key;
483-
that.decryptMiniProgramUser({
484-
sessionKey,
485-
encryptedData: options.encryptedData,
486-
iv: options.iv,
487-
}, callback);
478+
var user;
479+
try {
480+
user = that.decryptMiniProgramUser({
481+
sessionKey,
482+
encryptedData: options.encryptedData,
483+
iv: options.iv,
484+
});
485+
} catch (ex) {
486+
return callback(ex);
487+
}
488+
489+
callback(null, user);
488490
});
489491
} else {
490492
this.getAccessToken(code, function (err, result) {

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"wechat"
1616
],
1717
"dependencies": {
18-
"urllib": "2.7.0"
18+
"urllib": "^2.30.0"
1919
},
2020
"devDependencies": {
2121
"coveralls": "*",

test/oauth.test.js

+15-18
Original file line numberDiff line numberDiff line change
@@ -491,19 +491,17 @@ describe('oauth.js', function () {
491491
});
492492
});
493493

494-
muk(api, 'decryptMiniProgramUser', function (code, callback) {
495-
process.nextTick(function () {
496-
callback(null, {
497-
openId: 'OPENID',
498-
nickName: 'NICKNAME',
499-
gender: 0,
500-
city: 'CITY',
501-
province: 'PROVINCE',
502-
country: 'COUNTRY',
503-
avatarUrl: 'AVATARURL',
504-
unionId: 'UNIONID',
505-
});
506-
});
494+
muk(api, 'decryptMiniProgramUser', function (code) {
495+
return {
496+
openId: 'OPENID',
497+
nickName: 'NICKNAME',
498+
gender: 0,
499+
city: 'CITY',
500+
province: 'PROVINCE',
501+
country: 'COUNTRY',
502+
avatarUrl: 'AVATARURL',
503+
unionId: 'UNIONID',
504+
};
507505
});
508506
});
509507

@@ -594,11 +592,10 @@ describe('oauth.js', function () {
594592
describe('decryptMiniProgramUser', function () {
595593
describe('should not ok', function () {
596594
var api = new OAuth('appid', 'secret', null, null, true);
597-
it('should not ok with invalid data', function (done) {
598-
api.decryptMiniProgramUser({}, function (err, result) {
599-
expect(err).to.be.a(Error);
600-
done();
601-
});
595+
it('should not ok with invalid data', function () {
596+
expect(function () {
597+
api.decryptMiniProgramUser({});
598+
}).to.throwError();
602599
});
603600
});
604601
});

0 commit comments

Comments
 (0)