@norcy/react-native-toolkit 0.1.76 → 0.1.78

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.
@@ -4,10 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.WeChatLoginUtil = void 0;
7
+ var _reactNative = require("react-native");
7
8
  var WeChat = _interopRequireWildcard(require("react-native-wechat-lib"));
8
9
  var _Tool = require("./Tool");
9
- var _jsSha = require("js-sha1");
10
- var _reactNative = require("react-native");
11
10
  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
11
  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
12
  // https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
@@ -24,41 +23,47 @@ const getSDKTicket = async accessToken => {
24
23
  return res.ticket;
25
24
  };
26
25
  const createSignature = (WeiXinId, nonceStr, sdkTicket, timestamp) => {
27
- const ret = 'appid=' + WeiXinId + '&noncestr+' + nonceStr + '&sdk_ticket+' + sdkTicket + '&timestamp+' + timestamp;
28
- return (0, _jsSha.sha1)(ret);
26
+ const ret = 'appid=' + WeiXinId + '&noncestr=' + nonceStr + '&sdk_ticket=' + sdkTicket + '&timestamp=' + timestamp;
27
+ console.log('wx scan signature', ret);
28
+ const sha1 = require('crypto-js/sha1');
29
+ return sha1(ret);
30
+ };
31
+ const getUserInfo = (WeiXinId, WeiXinSecret, code, callback) => {
32
+ let accessTokenUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + WeiXinId + '&secret=' + WeiXinSecret + '&code=' + code + '&grant_type=authorization_code';
33
+ fetch(accessTokenUrl).then(res => {
34
+ return res.json();
35
+ }).then(res => {
36
+ console.log('wechat get access code success: ', res.access_token);
37
+ let userInfoUrl = 'https://api.weixin.qq.com/sns/userinfo?access_token=' + res.access_token + '&openid=' + res.openid;
38
+ fetch(userInfoUrl).then(res2 => {
39
+ return res2.json();
40
+ }).then(json => {
41
+ console.log('wechat get user info success: ', json);
42
+ callback({
43
+ nickname: json.nickname,
44
+ headimgurl: json.headimgurl,
45
+ openid: json.openid,
46
+ unionid: json.unionid
47
+ });
48
+ }).catch(e => {
49
+ console.warn('wechat get user info fail ', e);
50
+ callback({
51
+ error: e
52
+ });
53
+ });
54
+ }).catch(e => {
55
+ console.warn('wechat get access code fail ', e);
56
+ callback({
57
+ error: e
58
+ });
59
+ });
29
60
  };
30
61
  const WeChatLoginUtil = exports.WeChatLoginUtil = {
31
62
  doLogin: (WeiXinId, WeiXinSecret, callback) => {
32
63
  WeChat.sendAuthRequest('snsapi_userinfo').then(ret => {
64
+ var _ret$code;
33
65
  console.log('wechat auth success ', ret);
34
- let accessTokenUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + WeiXinId + '&secret=' + WeiXinSecret + '&code=' + ret.code + '&grant_type=authorization_code';
35
- fetch(accessTokenUrl).then(res => {
36
- return res.json();
37
- }).then(res => {
38
- console.log('wechat get access code success: ', res.access_token);
39
- let userInfoUrl = 'https://api.weixin.qq.com/sns/userinfo?access_token=' + res.access_token + '&openid=' + res.openid;
40
- fetch(userInfoUrl).then(res2 => {
41
- return res2.json();
42
- }).then(json => {
43
- console.log('wechat get user info success: ', json);
44
- callback({
45
- nickname: json.nickname,
46
- headimgurl: json.headimgurl,
47
- openid: json.openid,
48
- unionid: json.unionid
49
- });
50
- }).catch(e => {
51
- console.warn('wechat get user info fail ', e);
52
- callback({
53
- error: e
54
- });
55
- });
56
- }).catch(e => {
57
- console.warn('wechat get access code fail ', e);
58
- callback({
59
- error: e
60
- });
61
- });
66
+ getUserInfo(WeiXinId, WeiXinSecret, (_ret$code = ret === null || ret === void 0 ? void 0 : ret.code) !== null && _ret$code !== void 0 ? _ret$code : '', callback);
62
67
  }).catch(e => {
63
68
  console.warn('wechat auth fail ', e);
64
69
  callback({
@@ -66,14 +71,16 @@ const WeChatLoginUtil = exports.WeChatLoginUtil = {
66
71
  });
67
72
  });
68
73
  },
69
- doLoginByScan: async (WeiXinId, WeiXinSecret) => {
70
- const token = await getAccessToken(WeiXinId, WeiXinSecret);
71
- const ticket = await getSDKTicket(token);
74
+ doLoginByScan: async (WeiXinId, WeiXinSecret, callback) => {
75
+ const accessToken = await getAccessToken(WeiXinId, WeiXinSecret);
76
+ const ticket = await getSDKTicket(accessToken);
72
77
  const nonceStr = _Tool.Tool.generateObjectId();
73
- const timestamp = String(Date.now());
74
- const signature = createSignature(WeiXinId, ticket, nonceStr, timestamp);
75
- _reactNative.NativeModules.RCTWeChat.Auth(WeiXinId, nonceStr, timestamp, 'snsapi_userinfo', signature, null, ret => {
78
+ const timestamp = String(Math.round(Date.now() / 1000));
79
+ const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
80
+ _reactNative.NativeModules.WeChat.authByScan(WeiXinId, nonceStr, timestamp, 'snsapi_userinfo', signature, '', ret => {
81
+ var _ret$0$authCode, _ret$;
76
82
  console.log('scan result', ret);
83
+ getUserInfo(WeiXinId, WeiXinSecret, (_ret$0$authCode = (_ret$ = ret[0]) === null || _ret$ === void 0 ? void 0 : _ret$.authCode) !== null && _ret$0$authCode !== void 0 ? _ret$0$authCode : '', callback);
77
84
  });
78
85
  }
79
86
  };
@@ -1 +1 @@
1
- {"version":3,"names":["WeChat","_interopRequireWildcard","require","_Tool","_jsSha","_reactNative","_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","sha1","WeChatLoginUtil","exports","doLogin","callback","sendAuthRequest","then","console","log","accessTokenUrl","code","userInfoUrl","openid","res2","nickname","headimgurl","unionid","catch","e","warn","error","doLoginByScan","token","Tool","generateObjectId","String","Date","now","signature","NativeModules","RCTWeChat","Auth"],"sources":["WeChatLoginUtil.ts"],"sourcesContent":["import * as WeChat from 'react-native-wechat-lib';\nimport { Tool } from './Tool';\nimport { sha1 } from 'js-sha1';\nimport { NativeModules } from 'react-native';\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 ret =\n 'appid=' +\n WeiXinId +\n '&noncestr+' +\n nonceStr +\n '&sdk_ticket+' +\n sdkTicket +\n '&timestamp+' +\n timestamp;\n return sha1(ret);\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\n let accessTokenUrl =\n 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' +\n WeiXinId +\n '&secret=' +\n WeiXinSecret +\n '&code=' +\n ret.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 .catch((e: any) => {\n console.warn('wechat auth fail ', e);\n callback({ error: e });\n });\n },\n\n doLoginByScan: async (WeiXinId: string, WeiXinSecret: string) => {\n const token = await getAccessToken(WeiXinId, WeiXinSecret);\n const ticket = await getSDKTicket(token);\n const nonceStr = Tool.generateObjectId();\n const timestamp = String(Date.now());\n const signature = createSignature(WeiXinId, ticket, nonceStr, timestamp);\n NativeModules.RCTWeChat.Auth(\n WeiXinId,\n nonceStr,\n timestamp,\n 'snsapi_userinfo',\n signature,\n null,\n (ret: []) => {\n console.log('scan result', ret);\n }\n );\n },\n};\n"],"mappings":"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"}
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","console","log","sha1","getUserInfo","code","callback","accessTokenUrl","then","userInfoUrl","openid","res2","nickname","headimgurl","unionid","catch","e","warn","error","WeChatLoginUtil","exports","doLogin","sendAuthRequest","_ret$code","doLoginByScan","Tool","generateObjectId","String","Math","round","Date","now","signature","NativeModules","authByScan","_ret$0$authCode","_ret$","authCode"],"sources":["WeChatLoginUtil.ts"],"sourcesContent":["import { 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 ret =\n 'appid=' +\n WeiXinId +\n '&noncestr=' +\n nonceStr +\n '&sdk_ticket=' +\n sdkTicket +\n '&timestamp=' +\n timestamp;\n console.log('wx scan signature', ret);\n const sha1 = require('crypto-js/sha1');\n return sha1(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 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 getUserInfo(WeiXinId, WeiXinSecret, ret[0]?.authCode ?? '', callback);\n }\n );\n },\n};\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
+ import { NativeModules } from 'react-native';
1
2
  import * as WeChat from 'react-native-wechat-lib';
2
3
  import { Tool } from './Tool';
3
- import { sha1 } from 'js-sha1';
4
- import { NativeModules } from 'react-native';
5
4
 
6
5
  // https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
7
6
  const getAccessToken = async (WeiXinId, WeiXinSecret) => {
@@ -17,41 +16,47 @@ const getSDKTicket = async accessToken => {
17
16
  return res.ticket;
18
17
  };
19
18
  const createSignature = (WeiXinId, nonceStr, sdkTicket, timestamp) => {
20
- const ret = 'appid=' + WeiXinId + '&noncestr+' + nonceStr + '&sdk_ticket+' + sdkTicket + '&timestamp+' + timestamp;
19
+ const ret = 'appid=' + WeiXinId + '&noncestr=' + nonceStr + '&sdk_ticket=' + sdkTicket + '&timestamp=' + timestamp;
20
+ console.log('wx scan signature', ret);
21
+ const sha1 = require('crypto-js/sha1');
21
22
  return sha1(ret);
22
23
  };
24
+ const getUserInfo = (WeiXinId, WeiXinSecret, code, callback) => {
25
+ let accessTokenUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + WeiXinId + '&secret=' + WeiXinSecret + '&code=' + code + '&grant_type=authorization_code';
26
+ fetch(accessTokenUrl).then(res => {
27
+ return res.json();
28
+ }).then(res => {
29
+ console.log('wechat get access code success: ', res.access_token);
30
+ let userInfoUrl = 'https://api.weixin.qq.com/sns/userinfo?access_token=' + res.access_token + '&openid=' + res.openid;
31
+ fetch(userInfoUrl).then(res2 => {
32
+ return res2.json();
33
+ }).then(json => {
34
+ console.log('wechat get user info success: ', json);
35
+ callback({
36
+ nickname: json.nickname,
37
+ headimgurl: json.headimgurl,
38
+ openid: json.openid,
39
+ unionid: json.unionid
40
+ });
41
+ }).catch(e => {
42
+ console.warn('wechat get user info fail ', e);
43
+ callback({
44
+ error: e
45
+ });
46
+ });
47
+ }).catch(e => {
48
+ console.warn('wechat get access code fail ', e);
49
+ callback({
50
+ error: e
51
+ });
52
+ });
53
+ };
23
54
  export const WeChatLoginUtil = {
24
55
  doLogin: (WeiXinId, WeiXinSecret, callback) => {
25
56
  WeChat.sendAuthRequest('snsapi_userinfo').then(ret => {
57
+ var _ret$code;
26
58
  console.log('wechat auth success ', ret);
27
- let accessTokenUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + WeiXinId + '&secret=' + WeiXinSecret + '&code=' + ret.code + '&grant_type=authorization_code';
28
- fetch(accessTokenUrl).then(res => {
29
- return res.json();
30
- }).then(res => {
31
- console.log('wechat get access code success: ', res.access_token);
32
- let userInfoUrl = 'https://api.weixin.qq.com/sns/userinfo?access_token=' + res.access_token + '&openid=' + res.openid;
33
- fetch(userInfoUrl).then(res2 => {
34
- return res2.json();
35
- }).then(json => {
36
- console.log('wechat get user info success: ', json);
37
- callback({
38
- nickname: json.nickname,
39
- headimgurl: json.headimgurl,
40
- openid: json.openid,
41
- unionid: json.unionid
42
- });
43
- }).catch(e => {
44
- console.warn('wechat get user info fail ', e);
45
- callback({
46
- error: e
47
- });
48
- });
49
- }).catch(e => {
50
- console.warn('wechat get access code fail ', e);
51
- callback({
52
- error: e
53
- });
54
- });
59
+ getUserInfo(WeiXinId, WeiXinSecret, (_ret$code = ret === null || ret === void 0 ? void 0 : ret.code) !== null && _ret$code !== void 0 ? _ret$code : '', callback);
55
60
  }).catch(e => {
56
61
  console.warn('wechat auth fail ', e);
57
62
  callback({
@@ -59,14 +64,16 @@ export const WeChatLoginUtil = {
59
64
  });
60
65
  });
61
66
  },
62
- doLoginByScan: async (WeiXinId, WeiXinSecret) => {
63
- const token = await getAccessToken(WeiXinId, WeiXinSecret);
64
- const ticket = await getSDKTicket(token);
67
+ doLoginByScan: async (WeiXinId, WeiXinSecret, callback) => {
68
+ const accessToken = await getAccessToken(WeiXinId, WeiXinSecret);
69
+ const ticket = await getSDKTicket(accessToken);
65
70
  const nonceStr = Tool.generateObjectId();
66
- const timestamp = String(Date.now());
67
- const signature = createSignature(WeiXinId, ticket, nonceStr, timestamp);
68
- NativeModules.RCTWeChat.Auth(WeiXinId, nonceStr, timestamp, 'snsapi_userinfo', signature, null, ret => {
71
+ const timestamp = String(Math.round(Date.now() / 1000));
72
+ const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
73
+ NativeModules.WeChat.authByScan(WeiXinId, nonceStr, timestamp, 'snsapi_userinfo', signature, '', ret => {
74
+ var _ret$0$authCode, _ret$;
69
75
  console.log('scan result', ret);
76
+ getUserInfo(WeiXinId, WeiXinSecret, (_ret$0$authCode = (_ret$ = ret[0]) === null || _ret$ === void 0 ? void 0 : _ret$.authCode) !== null && _ret$0$authCode !== void 0 ? _ret$0$authCode : '', callback);
70
77
  });
71
78
  }
72
79
  };
@@ -1 +1 @@
1
- {"version":3,"names":["WeChat","Tool","sha1","NativeModules","getAccessToken","WeiXinId","WeiXinSecret","url","response","fetch","res","json","access_token","getSDKTicket","accessToken","ticket","createSignature","nonceStr","sdkTicket","timestamp","ret","WeChatLoginUtil","doLogin","callback","sendAuthRequest","then","console","log","accessTokenUrl","code","userInfoUrl","openid","res2","nickname","headimgurl","unionid","catch","e","warn","error","doLoginByScan","token","generateObjectId","String","Date","now","signature","RCTWeChat","Auth"],"sources":["WeChatLoginUtil.ts"],"sourcesContent":["import * as WeChat from 'react-native-wechat-lib';\nimport { Tool } from './Tool';\nimport { sha1 } from 'js-sha1';\nimport { NativeModules } from 'react-native';\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 ret =\n 'appid=' +\n WeiXinId +\n '&noncestr+' +\n nonceStr +\n '&sdk_ticket+' +\n sdkTicket +\n '&timestamp+' +\n timestamp;\n return sha1(ret);\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\n let accessTokenUrl =\n 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' +\n WeiXinId +\n '&secret=' +\n WeiXinSecret +\n '&code=' +\n ret.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 .catch((e: any) => {\n console.warn('wechat auth fail ', e);\n callback({ error: e });\n });\n },\n\n doLoginByScan: async (WeiXinId: string, WeiXinSecret: string) => {\n const token = await getAccessToken(WeiXinId, WeiXinSecret);\n const ticket = await getSDKTicket(token);\n const nonceStr = Tool.generateObjectId();\n const timestamp = String(Date.now());\n const signature = createSignature(WeiXinId, ticket, nonceStr, timestamp);\n NativeModules.RCTWeChat.Auth(\n WeiXinId,\n nonceStr,\n timestamp,\n 'snsapi_userinfo',\n signature,\n null,\n (ret: []) => {\n console.log('scan result', ret);\n }\n );\n },\n};\n"],"mappings":"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"}
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","sha1","require","getUserInfo","code","callback","accessTokenUrl","then","userInfoUrl","openid","res2","nickname","headimgurl","unionid","catch","e","warn","error","WeChatLoginUtil","doLogin","sendAuthRequest","_ret$code","doLoginByScan","generateObjectId","String","Math","round","Date","now","signature","authByScan","_ret$0$authCode","_ret$","authCode"],"sources":["WeChatLoginUtil.ts"],"sourcesContent":["import { 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 ret =\n 'appid=' +\n WeiXinId +\n '&noncestr=' +\n nonceStr +\n '&sdk_ticket=' +\n sdkTicket +\n '&timestamp=' +\n timestamp;\n console.log('wx scan signature', ret);\n const sha1 = require('crypto-js/sha1');\n return sha1(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 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 getUserInfo(WeiXinId, WeiXinSecret, ret[0]?.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) => Promise<void>;
3
+ doLoginByScan: (WeiXinId: string, WeiXinSecret: string, callback: Function) => Promise<void>;
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norcy/react-native-toolkit",
3
- "version": "0.1.76",
3
+ "version": "0.1.78",
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",
61
62
  "eslint": "^7.2.0",
62
63
  "eslint-config-prettier": "^6.11.0",
63
64
  "eslint-plugin-prettier": "^3.1.3",
64
65
  "husky": "^4.2.5",
65
66
  "i18n-js": "^4.2.2",
66
67
  "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": "*",
90
91
  "i18n-js": "*",
91
- "js-sha1": "*",
92
92
  "leancloud-storage": "*",
93
93
  "query-string": "^8.0.0",
94
94
  "react": "*",
@@ -1,7 +1,6 @@
1
+ import { NativeModules } from 'react-native';
1
2
  import * as WeChat from 'react-native-wechat-lib';
2
3
  import { Tool } from './Tool';
3
- import { sha1 } from 'js-sha1';
4
- import { NativeModules } from 'react-native';
5
4
 
6
5
  // https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
7
6
  const getAccessToken = async (WeiXinId: string, WeiXinSecret: string) => {
@@ -33,62 +32,72 @@ const createSignature = (
33
32
  const ret =
34
33
  'appid=' +
35
34
  WeiXinId +
36
- '&noncestr+' +
35
+ '&noncestr=' +
37
36
  nonceStr +
38
- '&sdk_ticket+' +
37
+ '&sdk_ticket=' +
39
38
  sdkTicket +
40
- '&timestamp+' +
39
+ '&timestamp=' +
41
40
  timestamp;
41
+ console.log('wx scan signature', ret);
42
+ const sha1 = require('crypto-js/sha1');
42
43
  return sha1(ret);
43
44
  };
44
45
 
46
+ const getUserInfo = (
47
+ WeiXinId: string,
48
+ WeiXinSecret: string,
49
+ code: string,
50
+ callback: Function
51
+ ) => {
52
+ let accessTokenUrl =
53
+ 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' +
54
+ WeiXinId +
55
+ '&secret=' +
56
+ WeiXinSecret +
57
+ '&code=' +
58
+ code +
59
+ '&grant_type=authorization_code';
60
+ fetch(accessTokenUrl)
61
+ .then((res) => {
62
+ return res.json();
63
+ })
64
+ .then((res) => {
65
+ console.log('wechat get access code success: ', res.access_token);
66
+ let userInfoUrl =
67
+ 'https://api.weixin.qq.com/sns/userinfo?access_token=' +
68
+ res.access_token +
69
+ '&openid=' +
70
+ res.openid;
71
+ fetch(userInfoUrl)
72
+ .then((res2) => {
73
+ return res2.json();
74
+ })
75
+ .then((json) => {
76
+ console.log('wechat get user info success: ', json);
77
+ callback({
78
+ nickname: json.nickname,
79
+ headimgurl: json.headimgurl,
80
+ openid: json.openid,
81
+ unionid: json.unionid,
82
+ });
83
+ })
84
+ .catch((e) => {
85
+ console.warn('wechat get user info fail ', e);
86
+ callback({ error: e });
87
+ });
88
+ })
89
+ .catch((e) => {
90
+ console.warn('wechat get access code fail ', e);
91
+ callback({ error: e });
92
+ });
93
+ };
94
+
45
95
  export const WeChatLoginUtil = {
46
96
  doLogin: (WeiXinId: string, WeiXinSecret: string, callback: Function) => {
47
97
  WeChat.sendAuthRequest('snsapi_userinfo')
48
98
  .then((ret) => {
49
99
  console.log('wechat auth success ', ret);
50
-
51
- let accessTokenUrl =
52
- 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' +
53
- WeiXinId +
54
- '&secret=' +
55
- WeiXinSecret +
56
- '&code=' +
57
- ret.code +
58
- '&grant_type=authorization_code';
59
- fetch(accessTokenUrl)
60
- .then((res) => {
61
- return res.json();
62
- })
63
- .then((res) => {
64
- console.log('wechat get access code success: ', res.access_token);
65
- let userInfoUrl =
66
- 'https://api.weixin.qq.com/sns/userinfo?access_token=' +
67
- res.access_token +
68
- '&openid=' +
69
- res.openid;
70
- fetch(userInfoUrl)
71
- .then((res2) => {
72
- return res2.json();
73
- })
74
- .then((json) => {
75
- console.log('wechat get user info success: ', json);
76
- callback({
77
- nickname: json.nickname,
78
- headimgurl: json.headimgurl,
79
- openid: json.openid,
80
- unionid: json.unionid,
81
- });
82
- })
83
- .catch((e) => {
84
- console.warn('wechat get user info fail ', e);
85
- callback({ error: e });
86
- });
87
- })
88
- .catch((e) => {
89
- console.warn('wechat get access code fail ', e);
90
- callback({ error: e });
91
- });
100
+ getUserInfo(WeiXinId, WeiXinSecret, ret?.code ?? '', callback);
92
101
  })
93
102
  .catch((e: any) => {
94
103
  console.warn('wechat auth fail ', e);
@@ -96,21 +105,26 @@ export const WeChatLoginUtil = {
96
105
  });
97
106
  },
98
107
 
99
- doLoginByScan: async (WeiXinId: string, WeiXinSecret: string) => {
100
- const token = await getAccessToken(WeiXinId, WeiXinSecret);
101
- const ticket = await getSDKTicket(token);
108
+ doLoginByScan: async (
109
+ WeiXinId: string,
110
+ WeiXinSecret: string,
111
+ callback: Function
112
+ ) => {
113
+ const accessToken = await getAccessToken(WeiXinId, WeiXinSecret);
114
+ const ticket = await getSDKTicket(accessToken);
102
115
  const nonceStr = Tool.generateObjectId();
103
- const timestamp = String(Date.now());
104
- const signature = createSignature(WeiXinId, ticket, nonceStr, timestamp);
105
- NativeModules.RCTWeChat.Auth(
116
+ const timestamp = String(Math.round(Date.now() / 1000));
117
+ const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
118
+ NativeModules.WeChat.authByScan(
106
119
  WeiXinId,
107
120
  nonceStr,
108
121
  timestamp,
109
122
  'snsapi_userinfo',
110
123
  signature,
111
- null,
112
- (ret: []) => {
124
+ '',
125
+ (ret: any) => {
113
126
  console.log('scan result', ret);
127
+ getUserInfo(WeiXinId, WeiXinSecret, ret[0]?.authCode ?? '', callback);
114
128
  }
115
129
  );
116
130
  },
package/yarn.lock CHANGED
@@ -4217,6 +4217,11 @@ 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
+
4220
4225
  crypto-random-string@^2.0.0:
4221
4226
  version "2.0.0"
4222
4227
  resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
@@ -7262,11 +7267,6 @@ jetifier@^1.6.2, jetifier@^1.6.6:
7262
7267
  resolved "https://registry.yarnpkg.com/jetifier/-/jetifier-1.6.8.tgz#e88068697875cbda98c32472902c4d3756247798"
7263
7268
  integrity sha512-3Zi16h6L5tXDRQJTb221cnRoVG9/9OvreLdLU2/ZjRv/GILL+2Cemt0IKvkowwkDpvouAU1DQPOJ7qaiHeIdrw==
7264
7269
 
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"