@norcy/react-native-toolkit 0.1.79 → 0.1.81
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.
- package/lib/commonjs/WeChatLoginUtil.js +6 -5
- package/lib/commonjs/WeChatLoginUtil.js.map +1 -1
- package/lib/module/WeChatLoginUtil.js +6 -5
- package/lib/module/WeChatLoginUtil.js.map +1 -1
- package/lib/typescript/WeChatLoginUtil.d.ts +1 -1
- package/package.json +1 -1
- package/src/WeChatLoginUtil.ts +8 -3
- package/yarn-error.log +11677 -0
|
@@ -4,10 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.WeChatLoginUtil = void 0;
|
|
7
|
+
var _jsSha = require("js-sha1");
|
|
7
8
|
var _reactNative = require("react-native");
|
|
8
9
|
var WeChat = _interopRequireWildcard(require("react-native-wechat-lib"));
|
|
9
10
|
var _Tool = require("./Tool");
|
|
10
|
-
var _jsSha = require("js-sha1");
|
|
11
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); }
|
|
12
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; }
|
|
13
13
|
// https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
|
|
@@ -77,22 +77,23 @@ const WeChatLoginUtil = exports.WeChatLoginUtil = {
|
|
|
77
77
|
});
|
|
78
78
|
});
|
|
79
79
|
},
|
|
80
|
-
doLoginByScan: async (WeiXinId, WeiXinSecret, callback) => {
|
|
80
|
+
doLoginByScan: async (WeiXinId, WeiXinSecret, onQRGet, callback) => {
|
|
81
81
|
const accessToken = await getAccessToken(WeiXinId, WeiXinSecret);
|
|
82
82
|
const ticket = await getSDKTicket(accessToken);
|
|
83
83
|
const nonceStr = _Tool.Tool.generateObjectId();
|
|
84
84
|
const timestamp = String(Math.round(Date.now() / 1000));
|
|
85
85
|
const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
|
|
86
86
|
_reactNative.NativeModules.WeChat.authByScan(WeiXinId, nonceStr, timestamp, 'snsapi_userinfo', signature, '', ret => {
|
|
87
|
-
|
|
87
|
+
onQRGet(ret === null || ret === void 0 ? void 0 : ret.qrcode);
|
|
88
|
+
}, ret => {
|
|
88
89
|
console.log('scan result', ret);
|
|
89
|
-
if (!(
|
|
90
|
+
if (!(ret !== null && ret !== void 0 && ret.authCode)) {
|
|
90
91
|
callback({
|
|
91
92
|
error: 'Auth code 获取失败'
|
|
92
93
|
});
|
|
93
94
|
return;
|
|
94
95
|
}
|
|
95
|
-
getUserInfo(WeiXinId, WeiXinSecret,
|
|
96
|
+
getUserInfo(WeiXinId, WeiXinSecret, ret === null || ret === void 0 ? void 0 : ret.authCode, callback);
|
|
96
97
|
});
|
|
97
98
|
}
|
|
98
99
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_jsSha","require","_reactNative","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","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","onQRGet","Tool","generateObjectId","String","Math","round","Date","now","signature","NativeModules","authByScan","qrcode","authCode"],"sources":["WeChatLoginUtil.ts"],"sourcesContent":["import { sha1 } from 'js-sha1';\nimport { NativeModules } from 'react-native';\nimport * as WeChat from 'react-native-wechat-lib';\nimport { Tool } from './Tool';\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 onQRGet: (qrcode: string) => void,\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\n NativeModules.WeChat.authByScan(\n WeiXinId,\n nonceStr,\n timestamp,\n 'snsapi_userinfo',\n signature,\n '',\n (ret: any) => {\n onQRGet(ret?.qrcode);\n },\n (ret: any) => {\n console.log('scan result', ret);\n if (!ret?.authCode) {\n callback({ error: 'Auth code 获取失败' });\n return;\n }\n getUserInfo(WeiXinId, WeiXinSecret, ret?.authCode, callback);\n }\n );\n },\n};\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { sha1 } from 'js-sha1';
|
|
1
2
|
import { NativeModules } from 'react-native';
|
|
2
3
|
import * as WeChat from 'react-native-wechat-lib';
|
|
3
4
|
import { Tool } from './Tool';
|
|
4
|
-
import { sha1 } from 'js-sha1';
|
|
5
5
|
|
|
6
6
|
// https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
|
|
7
7
|
const getAccessToken = async (WeiXinId, WeiXinSecret) => {
|
|
@@ -70,22 +70,23 @@ export const WeChatLoginUtil = {
|
|
|
70
70
|
});
|
|
71
71
|
});
|
|
72
72
|
},
|
|
73
|
-
doLoginByScan: async (WeiXinId, WeiXinSecret, callback) => {
|
|
73
|
+
doLoginByScan: async (WeiXinId, WeiXinSecret, onQRGet, callback) => {
|
|
74
74
|
const accessToken = await getAccessToken(WeiXinId, WeiXinSecret);
|
|
75
75
|
const ticket = await getSDKTicket(accessToken);
|
|
76
76
|
const nonceStr = Tool.generateObjectId();
|
|
77
77
|
const timestamp = String(Math.round(Date.now() / 1000));
|
|
78
78
|
const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
|
|
79
79
|
NativeModules.WeChat.authByScan(WeiXinId, nonceStr, timestamp, 'snsapi_userinfo', signature, '', ret => {
|
|
80
|
-
|
|
80
|
+
onQRGet(ret === null || ret === void 0 ? void 0 : ret.qrcode);
|
|
81
|
+
}, ret => {
|
|
81
82
|
console.log('scan result', ret);
|
|
82
|
-
if (!(
|
|
83
|
+
if (!(ret !== null && ret !== void 0 && ret.authCode)) {
|
|
83
84
|
callback({
|
|
84
85
|
error: 'Auth code 获取失败'
|
|
85
86
|
});
|
|
86
87
|
return;
|
|
87
88
|
}
|
|
88
|
-
getUserInfo(WeiXinId, WeiXinSecret,
|
|
89
|
+
getUserInfo(WeiXinId, WeiXinSecret, ret === null || ret === void 0 ? void 0 : ret.authCode, callback);
|
|
89
90
|
});
|
|
90
91
|
}
|
|
91
92
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","WeChat","Tool","
|
|
1
|
+
{"version":3,"names":["sha1","NativeModules","WeChat","Tool","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","onQRGet","generateObjectId","String","Math","round","Date","now","signature","authByScan","qrcode","authCode"],"sources":["WeChatLoginUtil.ts"],"sourcesContent":["import { sha1 } from 'js-sha1';\nimport { NativeModules } from 'react-native';\nimport * as WeChat from 'react-native-wechat-lib';\nimport { Tool } from './Tool';\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 onQRGet: (qrcode: string) => void,\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\n NativeModules.WeChat.authByScan(\n WeiXinId,\n nonceStr,\n timestamp,\n 'snsapi_userinfo',\n signature,\n '',\n (ret: any) => {\n onQRGet(ret?.qrcode);\n },\n (ret: any) => {\n console.log('scan result', ret);\n if (!ret?.authCode) {\n callback({ error: 'Auth code 获取失败' });\n return;\n }\n getUserInfo(WeiXinId, WeiXinSecret, ret?.authCode, callback);\n }\n );\n },\n};\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare const WeChatLoginUtil: {
|
|
2
2
|
doLogin: (WeiXinId: string, WeiXinSecret: string, callback: Function) => void;
|
|
3
|
-
doLoginByScan: (WeiXinId: string, WeiXinSecret: string, callback: Function) => Promise<void>;
|
|
3
|
+
doLoginByScan: (WeiXinId: string, WeiXinSecret: string, onQRGet: (qrcode: string) => void, callback: Function) => Promise<void>;
|
|
4
4
|
};
|
package/package.json
CHANGED
package/src/WeChatLoginUtil.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { sha1 } from 'js-sha1';
|
|
1
2
|
import { NativeModules } from 'react-native';
|
|
2
3
|
import * as WeChat from 'react-native-wechat-lib';
|
|
3
4
|
import { Tool } from './Tool';
|
|
4
|
-
import { sha1 } from 'js-sha1';
|
|
5
5
|
|
|
6
6
|
// https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
|
|
7
7
|
const getAccessToken = async (WeiXinId: string, WeiXinSecret: string) => {
|
|
@@ -113,6 +113,7 @@ export const WeChatLoginUtil = {
|
|
|
113
113
|
doLoginByScan: async (
|
|
114
114
|
WeiXinId: string,
|
|
115
115
|
WeiXinSecret: string,
|
|
116
|
+
onQRGet: (qrcode: string) => void,
|
|
116
117
|
callback: Function
|
|
117
118
|
) => {
|
|
118
119
|
const accessToken = await getAccessToken(WeiXinId, WeiXinSecret);
|
|
@@ -120,6 +121,7 @@ export const WeChatLoginUtil = {
|
|
|
120
121
|
const nonceStr = Tool.generateObjectId();
|
|
121
122
|
const timestamp = String(Math.round(Date.now() / 1000));
|
|
122
123
|
const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
|
|
124
|
+
|
|
123
125
|
NativeModules.WeChat.authByScan(
|
|
124
126
|
WeiXinId,
|
|
125
127
|
nonceStr,
|
|
@@ -127,13 +129,16 @@ export const WeChatLoginUtil = {
|
|
|
127
129
|
'snsapi_userinfo',
|
|
128
130
|
signature,
|
|
129
131
|
'',
|
|
132
|
+
(ret: any) => {
|
|
133
|
+
onQRGet(ret?.qrcode);
|
|
134
|
+
},
|
|
130
135
|
(ret: any) => {
|
|
131
136
|
console.log('scan result', ret);
|
|
132
|
-
if (!ret
|
|
137
|
+
if (!ret?.authCode) {
|
|
133
138
|
callback({ error: 'Auth code 获取失败' });
|
|
134
139
|
return;
|
|
135
140
|
}
|
|
136
|
-
getUserInfo(WeiXinId, WeiXinSecret, ret
|
|
141
|
+
getUserInfo(WeiXinId, WeiXinSecret, ret?.authCode, callback);
|
|
137
142
|
}
|
|
138
143
|
);
|
|
139
144
|
},
|