@norcy/react-native-toolkit 0.1.78 → 0.1.79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -7,6 +7,7 @@ exports.WeChatLoginUtil = void 0;
|
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
var WeChat = _interopRequireWildcard(require("react-native-wechat-lib"));
|
|
9
9
|
var _Tool = require("./Tool");
|
|
10
|
+
var _jsSha = require("js-sha1");
|
|
10
11
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
11
12
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
12
13
|
// https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
|
|
@@ -23,10 +24,10 @@ const getSDKTicket = async accessToken => {
|
|
|
23
24
|
return res.ticket;
|
|
24
25
|
};
|
|
25
26
|
const createSignature = (WeiXinId, nonceStr, sdkTicket, timestamp) => {
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return
|
|
27
|
+
const origin = 'appid=' + WeiXinId + '&noncestr=' + nonceStr + '&sdk_ticket=' + sdkTicket + '×tamp=' + timestamp;
|
|
28
|
+
const ret = (0, _jsSha.sha1)(origin);
|
|
29
|
+
console.log('wx scan signature', origin, ret);
|
|
30
|
+
return ret;
|
|
30
31
|
};
|
|
31
32
|
const getUserInfo = (WeiXinId, WeiXinSecret, code, callback) => {
|
|
32
33
|
let accessTokenUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + WeiXinId + '&secret=' + WeiXinSecret + '&code=' + code + '&grant_type=authorization_code';
|
|
@@ -61,9 +62,14 @@ const getUserInfo = (WeiXinId, WeiXinSecret, code, callback) => {
|
|
|
61
62
|
const WeChatLoginUtil = exports.WeChatLoginUtil = {
|
|
62
63
|
doLogin: (WeiXinId, WeiXinSecret, callback) => {
|
|
63
64
|
WeChat.sendAuthRequest('snsapi_userinfo').then(ret => {
|
|
64
|
-
var _ret$code;
|
|
65
65
|
console.log('wechat auth success ', ret);
|
|
66
|
-
|
|
66
|
+
if (!(ret !== null && ret !== void 0 && ret.code)) {
|
|
67
|
+
callback({
|
|
68
|
+
error: 'Auth code 获取失败'
|
|
69
|
+
});
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
getUserInfo(WeiXinId, WeiXinSecret, ret === null || ret === void 0 ? void 0 : ret.code, callback);
|
|
67
73
|
}).catch(e => {
|
|
68
74
|
console.warn('wechat auth fail ', e);
|
|
69
75
|
callback({
|
|
@@ -78,9 +84,15 @@ const WeChatLoginUtil = exports.WeChatLoginUtil = {
|
|
|
78
84
|
const timestamp = String(Math.round(Date.now() / 1000));
|
|
79
85
|
const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
|
|
80
86
|
_reactNative.NativeModules.WeChat.authByScan(WeiXinId, nonceStr, timestamp, 'snsapi_userinfo', signature, '', ret => {
|
|
81
|
-
var _ret
|
|
87
|
+
var _ret$, _ret$2;
|
|
82
88
|
console.log('scan result', ret);
|
|
83
|
-
|
|
89
|
+
if (!((_ret$ = ret[0]) !== null && _ret$ !== void 0 && _ret$.authCode)) {
|
|
90
|
+
callback({
|
|
91
|
+
error: 'Auth code 获取失败'
|
|
92
|
+
});
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
getUserInfo(WeiXinId, WeiXinSecret, (_ret$2 = ret[0]) === null || _ret$2 === void 0 ? void 0 : _ret$2.authCode, callback);
|
|
84
96
|
});
|
|
85
97
|
}
|
|
86
98
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","WeChat","_interopRequireWildcard","_Tool","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","getAccessToken","WeiXinId","WeiXinSecret","url","response","fetch","res","json","access_token","getSDKTicket","accessToken","ticket","createSignature","nonceStr","sdkTicket","timestamp","ret","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","WeChat","_interopRequireWildcard","_Tool","_jsSha","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","getAccessToken","WeiXinId","WeiXinSecret","url","response","fetch","res","json","access_token","getSDKTicket","accessToken","ticket","createSignature","nonceStr","sdkTicket","timestamp","origin","ret","sha1","console","log","getUserInfo","code","callback","accessTokenUrl","then","userInfoUrl","openid","res2","nickname","headimgurl","unionid","catch","e","warn","error","WeChatLoginUtil","exports","doLogin","sendAuthRequest","doLoginByScan","Tool","generateObjectId","String","Math","round","Date","now","signature","NativeModules","authByScan","_ret$","_ret$2","authCode"],"sources":["WeChatLoginUtil.ts"],"sourcesContent":["import { NativeModules } from 'react-native';\nimport * as WeChat from 'react-native-wechat-lib';\nimport { Tool } from './Tool';\nimport { sha1 } from 'js-sha1';\n\n// https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html\nconst getAccessToken = async (WeiXinId: string, WeiXinSecret: string) => {\n let url =\n 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' +\n WeiXinId +\n '&secret=' +\n WeiXinSecret;\n const response = await fetch(url);\n const res = await response.json();\n return res.access_token;\n};\n\nconst getSDKTicket = async (accessToken: string) => {\n let url =\n 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=2&access_token=' +\n accessToken;\n const response = await fetch(url);\n const res = await response.json();\n return res.ticket;\n};\n\nconst createSignature = (\n WeiXinId: string,\n nonceStr: string,\n sdkTicket: string,\n timestamp: string\n) => {\n const origin =\n 'appid=' +\n WeiXinId +\n '&noncestr=' +\n nonceStr +\n '&sdk_ticket=' +\n sdkTicket +\n '×tamp=' +\n timestamp;\n const ret = sha1(origin);\n console.log('wx scan signature', origin, ret);\n return ret;\n};\n\nconst getUserInfo = (\n WeiXinId: string,\n WeiXinSecret: string,\n code: string,\n callback: Function\n) => {\n let accessTokenUrl =\n 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' +\n WeiXinId +\n '&secret=' +\n WeiXinSecret +\n '&code=' +\n code +\n '&grant_type=authorization_code';\n fetch(accessTokenUrl)\n .then((res) => {\n return res.json();\n })\n .then((res) => {\n console.log('wechat get access code success: ', res.access_token);\n let userInfoUrl =\n 'https://api.weixin.qq.com/sns/userinfo?access_token=' +\n res.access_token +\n '&openid=' +\n res.openid;\n fetch(userInfoUrl)\n .then((res2) => {\n return res2.json();\n })\n .then((json) => {\n console.log('wechat get user info success: ', json);\n callback({\n nickname: json.nickname,\n headimgurl: json.headimgurl,\n openid: json.openid,\n unionid: json.unionid,\n });\n })\n .catch((e) => {\n console.warn('wechat get user info fail ', e);\n callback({ error: e });\n });\n })\n .catch((e) => {\n console.warn('wechat get access code fail ', e);\n callback({ error: e });\n });\n};\n\nexport const WeChatLoginUtil = {\n doLogin: (WeiXinId: string, WeiXinSecret: string, callback: Function) => {\n WeChat.sendAuthRequest('snsapi_userinfo')\n .then((ret) => {\n console.log('wechat auth success ', ret);\n if (!ret?.code) {\n callback({ error: 'Auth code 获取失败' });\n return;\n }\n getUserInfo(WeiXinId, WeiXinSecret, ret?.code, callback);\n })\n .catch((e: any) => {\n console.warn('wechat auth fail ', e);\n callback({ error: e });\n });\n },\n\n doLoginByScan: async (\n WeiXinId: string,\n WeiXinSecret: string,\n callback: Function\n ) => {\n const accessToken = await getAccessToken(WeiXinId, WeiXinSecret);\n const ticket = await getSDKTicket(accessToken);\n const nonceStr = Tool.generateObjectId();\n const timestamp = String(Math.round(Date.now() / 1000));\n const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);\n NativeModules.WeChat.authByScan(\n WeiXinId,\n nonceStr,\n timestamp,\n 'snsapi_userinfo',\n signature,\n '',\n (ret: any) => {\n console.log('scan result', ret);\n if (!ret[0]?.authCode) {\n callback({ error: 'Auth code 获取失败' });\n return;\n }\n getUserInfo(WeiXinId, WeiXinSecret, ret[0]?.authCode, callback);\n }\n );\n },\n};\n"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { NativeModules } from 'react-native';
|
|
2
2
|
import * as WeChat from 'react-native-wechat-lib';
|
|
3
3
|
import { Tool } from './Tool';
|
|
4
|
+
import { sha1 } from 'js-sha1';
|
|
4
5
|
|
|
5
6
|
// https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
|
|
6
7
|
const getAccessToken = async (WeiXinId, WeiXinSecret) => {
|
|
@@ -16,10 +17,10 @@ const getSDKTicket = async accessToken => {
|
|
|
16
17
|
return res.ticket;
|
|
17
18
|
};
|
|
18
19
|
const createSignature = (WeiXinId, nonceStr, sdkTicket, timestamp) => {
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return
|
|
20
|
+
const origin = 'appid=' + WeiXinId + '&noncestr=' + nonceStr + '&sdk_ticket=' + sdkTicket + '×tamp=' + timestamp;
|
|
21
|
+
const ret = sha1(origin);
|
|
22
|
+
console.log('wx scan signature', origin, ret);
|
|
23
|
+
return ret;
|
|
23
24
|
};
|
|
24
25
|
const getUserInfo = (WeiXinId, WeiXinSecret, code, callback) => {
|
|
25
26
|
let accessTokenUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + WeiXinId + '&secret=' + WeiXinSecret + '&code=' + code + '&grant_type=authorization_code';
|
|
@@ -54,9 +55,14 @@ const getUserInfo = (WeiXinId, WeiXinSecret, code, callback) => {
|
|
|
54
55
|
export const WeChatLoginUtil = {
|
|
55
56
|
doLogin: (WeiXinId, WeiXinSecret, callback) => {
|
|
56
57
|
WeChat.sendAuthRequest('snsapi_userinfo').then(ret => {
|
|
57
|
-
var _ret$code;
|
|
58
58
|
console.log('wechat auth success ', ret);
|
|
59
|
-
|
|
59
|
+
if (!(ret !== null && ret !== void 0 && ret.code)) {
|
|
60
|
+
callback({
|
|
61
|
+
error: 'Auth code 获取失败'
|
|
62
|
+
});
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
getUserInfo(WeiXinId, WeiXinSecret, ret === null || ret === void 0 ? void 0 : ret.code, callback);
|
|
60
66
|
}).catch(e => {
|
|
61
67
|
console.warn('wechat auth fail ', e);
|
|
62
68
|
callback({
|
|
@@ -71,9 +77,15 @@ export const WeChatLoginUtil = {
|
|
|
71
77
|
const timestamp = String(Math.round(Date.now() / 1000));
|
|
72
78
|
const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
|
|
73
79
|
NativeModules.WeChat.authByScan(WeiXinId, nonceStr, timestamp, 'snsapi_userinfo', signature, '', ret => {
|
|
74
|
-
var _ret
|
|
80
|
+
var _ret$, _ret$2;
|
|
75
81
|
console.log('scan result', ret);
|
|
76
|
-
|
|
82
|
+
if (!((_ret$ = ret[0]) !== null && _ret$ !== void 0 && _ret$.authCode)) {
|
|
83
|
+
callback({
|
|
84
|
+
error: 'Auth code 获取失败'
|
|
85
|
+
});
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
getUserInfo(WeiXinId, WeiXinSecret, (_ret$2 = ret[0]) === null || _ret$2 === void 0 ? void 0 : _ret$2.authCode, callback);
|
|
77
89
|
});
|
|
78
90
|
}
|
|
79
91
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","WeChat","Tool","getAccessToken","WeiXinId","WeiXinSecret","url","response","fetch","res","json","access_token","getSDKTicket","accessToken","ticket","createSignature","nonceStr","sdkTicket","timestamp","ret","console","log","
|
|
1
|
+
{"version":3,"names":["NativeModules","WeChat","Tool","sha1","getAccessToken","WeiXinId","WeiXinSecret","url","response","fetch","res","json","access_token","getSDKTicket","accessToken","ticket","createSignature","nonceStr","sdkTicket","timestamp","origin","ret","console","log","getUserInfo","code","callback","accessTokenUrl","then","userInfoUrl","openid","res2","nickname","headimgurl","unionid","catch","e","warn","error","WeChatLoginUtil","doLogin","sendAuthRequest","doLoginByScan","generateObjectId","String","Math","round","Date","now","signature","authByScan","_ret$","_ret$2","authCode"],"sources":["WeChatLoginUtil.ts"],"sourcesContent":["import { NativeModules } from 'react-native';\nimport * as WeChat from 'react-native-wechat-lib';\nimport { Tool } from './Tool';\nimport { sha1 } from 'js-sha1';\n\n// https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html\nconst getAccessToken = async (WeiXinId: string, WeiXinSecret: string) => {\n let url =\n 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' +\n WeiXinId +\n '&secret=' +\n WeiXinSecret;\n const response = await fetch(url);\n const res = await response.json();\n return res.access_token;\n};\n\nconst getSDKTicket = async (accessToken: string) => {\n let url =\n 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=2&access_token=' +\n accessToken;\n const response = await fetch(url);\n const res = await response.json();\n return res.ticket;\n};\n\nconst createSignature = (\n WeiXinId: string,\n nonceStr: string,\n sdkTicket: string,\n timestamp: string\n) => {\n const origin =\n 'appid=' +\n WeiXinId +\n '&noncestr=' +\n nonceStr +\n '&sdk_ticket=' +\n sdkTicket +\n '×tamp=' +\n timestamp;\n const ret = sha1(origin);\n console.log('wx scan signature', origin, ret);\n return ret;\n};\n\nconst getUserInfo = (\n WeiXinId: string,\n WeiXinSecret: string,\n code: string,\n callback: Function\n) => {\n let accessTokenUrl =\n 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' +\n WeiXinId +\n '&secret=' +\n WeiXinSecret +\n '&code=' +\n code +\n '&grant_type=authorization_code';\n fetch(accessTokenUrl)\n .then((res) => {\n return res.json();\n })\n .then((res) => {\n console.log('wechat get access code success: ', res.access_token);\n let userInfoUrl =\n 'https://api.weixin.qq.com/sns/userinfo?access_token=' +\n res.access_token +\n '&openid=' +\n res.openid;\n fetch(userInfoUrl)\n .then((res2) => {\n return res2.json();\n })\n .then((json) => {\n console.log('wechat get user info success: ', json);\n callback({\n nickname: json.nickname,\n headimgurl: json.headimgurl,\n openid: json.openid,\n unionid: json.unionid,\n });\n })\n .catch((e) => {\n console.warn('wechat get user info fail ', e);\n callback({ error: e });\n });\n })\n .catch((e) => {\n console.warn('wechat get access code fail ', e);\n callback({ error: e });\n });\n};\n\nexport const WeChatLoginUtil = {\n doLogin: (WeiXinId: string, WeiXinSecret: string, callback: Function) => {\n WeChat.sendAuthRequest('snsapi_userinfo')\n .then((ret) => {\n console.log('wechat auth success ', ret);\n if (!ret?.code) {\n callback({ error: 'Auth code 获取失败' });\n return;\n }\n getUserInfo(WeiXinId, WeiXinSecret, ret?.code, callback);\n })\n .catch((e: any) => {\n console.warn('wechat auth fail ', e);\n callback({ error: e });\n });\n },\n\n doLoginByScan: async (\n WeiXinId: string,\n WeiXinSecret: string,\n callback: Function\n ) => {\n const accessToken = await getAccessToken(WeiXinId, WeiXinSecret);\n const ticket = await getSDKTicket(accessToken);\n const nonceStr = Tool.generateObjectId();\n const timestamp = String(Math.round(Date.now() / 1000));\n const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);\n NativeModules.WeChat.authByScan(\n WeiXinId,\n nonceStr,\n timestamp,\n 'snsapi_userinfo',\n signature,\n '',\n (ret: any) => {\n console.log('scan result', ret);\n if (!ret[0]?.authCode) {\n callback({ error: 'Auth code 获取失败' });\n return;\n }\n getUserInfo(WeiXinId, WeiXinSecret, ret[0]?.authCode, callback);\n }\n );\n },\n};\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@norcy/react-native-toolkit",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.79",
|
|
4
4
|
"description": "My Toolkit",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -58,13 +58,13 @@
|
|
|
58
58
|
"@types/react": "^16.9.19",
|
|
59
59
|
"@types/react-native": "0.62.13",
|
|
60
60
|
"commitlint": "^8.3.5",
|
|
61
|
-
"crypto-js": "^4.2.0",
|
|
62
61
|
"eslint": "^7.2.0",
|
|
63
62
|
"eslint-config-prettier": "^6.11.0",
|
|
64
63
|
"eslint-plugin-prettier": "^3.1.3",
|
|
65
64
|
"husky": "^4.2.5",
|
|
66
65
|
"i18n-js": "^4.2.2",
|
|
67
66
|
"jest": "^26.0.1",
|
|
67
|
+
"js-sha1": "^0.7.0",
|
|
68
68
|
"leancloud-storage": "^4.10.1",
|
|
69
69
|
"pod-install": "^0.1.0",
|
|
70
70
|
"prettier": "^2.0.5",
|
|
@@ -87,8 +87,8 @@
|
|
|
87
87
|
"@react-navigation/native": "*",
|
|
88
88
|
"@react-navigation/stack": "*",
|
|
89
89
|
"@sentry/react-native": "*",
|
|
90
|
-
"crypto-js": "*",
|
|
91
90
|
"i18n-js": "*",
|
|
91
|
+
"js-sha1": "*",
|
|
92
92
|
"leancloud-storage": "*",
|
|
93
93
|
"query-string": "^8.0.0",
|
|
94
94
|
"react": "*",
|
package/src/WeChatLoginUtil.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { NativeModules } from 'react-native';
|
|
2
2
|
import * as WeChat from 'react-native-wechat-lib';
|
|
3
3
|
import { Tool } from './Tool';
|
|
4
|
+
import { sha1 } from 'js-sha1';
|
|
4
5
|
|
|
5
6
|
// https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
|
|
6
7
|
const getAccessToken = async (WeiXinId: string, WeiXinSecret: string) => {
|
|
@@ -29,7 +30,7 @@ const createSignature = (
|
|
|
29
30
|
sdkTicket: string,
|
|
30
31
|
timestamp: string
|
|
31
32
|
) => {
|
|
32
|
-
const
|
|
33
|
+
const origin =
|
|
33
34
|
'appid=' +
|
|
34
35
|
WeiXinId +
|
|
35
36
|
'&noncestr=' +
|
|
@@ -38,9 +39,9 @@ const createSignature = (
|
|
|
38
39
|
sdkTicket +
|
|
39
40
|
'×tamp=' +
|
|
40
41
|
timestamp;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return
|
|
42
|
+
const ret = sha1(origin);
|
|
43
|
+
console.log('wx scan signature', origin, ret);
|
|
44
|
+
return ret;
|
|
44
45
|
};
|
|
45
46
|
|
|
46
47
|
const getUserInfo = (
|
|
@@ -97,7 +98,11 @@ export const WeChatLoginUtil = {
|
|
|
97
98
|
WeChat.sendAuthRequest('snsapi_userinfo')
|
|
98
99
|
.then((ret) => {
|
|
99
100
|
console.log('wechat auth success ', ret);
|
|
100
|
-
|
|
101
|
+
if (!ret?.code) {
|
|
102
|
+
callback({ error: 'Auth code 获取失败' });
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
getUserInfo(WeiXinId, WeiXinSecret, ret?.code, callback);
|
|
101
106
|
})
|
|
102
107
|
.catch((e: any) => {
|
|
103
108
|
console.warn('wechat auth fail ', e);
|
|
@@ -124,7 +129,11 @@ export const WeChatLoginUtil = {
|
|
|
124
129
|
'',
|
|
125
130
|
(ret: any) => {
|
|
126
131
|
console.log('scan result', ret);
|
|
127
|
-
|
|
132
|
+
if (!ret[0]?.authCode) {
|
|
133
|
+
callback({ error: 'Auth code 获取失败' });
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
getUserInfo(WeiXinId, WeiXinSecret, ret[0]?.authCode, callback);
|
|
128
137
|
}
|
|
129
138
|
);
|
|
130
139
|
},
|
package/yarn.lock
CHANGED
|
@@ -4217,11 +4217,6 @@ crypt@0.0.2:
|
|
|
4217
4217
|
resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
|
|
4218
4218
|
integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==
|
|
4219
4219
|
|
|
4220
|
-
crypto-js@^4.2.0:
|
|
4221
|
-
version "4.2.0"
|
|
4222
|
-
resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631"
|
|
4223
|
-
integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==
|
|
4224
|
-
|
|
4225
4220
|
crypto-random-string@^2.0.0:
|
|
4226
4221
|
version "2.0.0"
|
|
4227
4222
|
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
|
|
@@ -7267,6 +7262,11 @@ jetifier@^1.6.2, jetifier@^1.6.6:
|
|
|
7267
7262
|
resolved "https://registry.yarnpkg.com/jetifier/-/jetifier-1.6.8.tgz#e88068697875cbda98c32472902c4d3756247798"
|
|
7268
7263
|
integrity sha512-3Zi16h6L5tXDRQJTb221cnRoVG9/9OvreLdLU2/ZjRv/GILL+2Cemt0IKvkowwkDpvouAU1DQPOJ7qaiHeIdrw==
|
|
7269
7264
|
|
|
7265
|
+
js-sha1@^0.7.0:
|
|
7266
|
+
version "0.7.0"
|
|
7267
|
+
resolved "https://registry.yarnpkg.com/js-sha1/-/js-sha1-0.7.0.tgz#fecaf5f36bb09a51b01da46b43a207c8452c9c1e"
|
|
7268
|
+
integrity sha512-oQZ1Mo7440BfLSv9TX87VNEyU52pXPVG19F9PL3gTgNt0tVxlZ8F4O6yze3CLuLx28TxotxvlyepCNaaV0ZjMw==
|
|
7269
|
+
|
|
7270
7270
|
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
|
|
7271
7271
|
version "4.0.0"
|
|
7272
7272
|
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|