@norcy/react-native-toolkit 0.1.78 → 0.1.80

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,11 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.WeChatLoginUtil = void 0;
7
- var _reactNative = require("react-native");
7
+ var _reactNativeRootSiblings = _interopRequireDefault(require("react-native-root-siblings"));
8
+ var _jsSha = require("js-sha1");
9
+ var _reactNative = _interopRequireWildcard(require("react-native"));
8
10
  var WeChat = _interopRequireWildcard(require("react-native-wechat-lib"));
9
11
  var _Tool = require("./Tool");
10
12
  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
13
  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; }
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
15
  // https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
13
16
  const getAccessToken = async (WeiXinId, WeiXinSecret) => {
14
17
  let url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + WeiXinId + '&secret=' + WeiXinSecret;
@@ -23,10 +26,10 @@ const getSDKTicket = async accessToken => {
23
26
  return res.ticket;
24
27
  };
25
28
  const createSignature = (WeiXinId, nonceStr, sdkTicket, timestamp) => {
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);
29
+ const origin = 'appid=' + WeiXinId + '&noncestr=' + nonceStr + '&sdk_ticket=' + sdkTicket + '&timestamp=' + timestamp;
30
+ const ret = (0, _jsSha.sha1)(origin);
31
+ console.log('wx scan signature', origin, ret);
32
+ return ret;
30
33
  };
31
34
  const getUserInfo = (WeiXinId, WeiXinSecret, code, callback) => {
32
35
  let accessTokenUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + WeiXinId + '&secret=' + WeiXinSecret + '&code=' + code + '&grant_type=authorization_code';
@@ -61,9 +64,14 @@ const getUserInfo = (WeiXinId, WeiXinSecret, code, callback) => {
61
64
  const WeChatLoginUtil = exports.WeChatLoginUtil = {
62
65
  doLogin: (WeiXinId, WeiXinSecret, callback) => {
63
66
  WeChat.sendAuthRequest('snsapi_userinfo').then(ret => {
64
- var _ret$code;
65
67
  console.log('wechat auth success ', ret);
66
- getUserInfo(WeiXinId, WeiXinSecret, (_ret$code = ret === null || ret === void 0 ? void 0 : ret.code) !== null && _ret$code !== void 0 ? _ret$code : '', callback);
68
+ if (!(ret !== null && ret !== void 0 && ret.code)) {
69
+ callback({
70
+ error: 'Auth code 获取失败'
71
+ });
72
+ return;
73
+ }
74
+ getUserInfo(WeiXinId, WeiXinSecret, ret === null || ret === void 0 ? void 0 : ret.code, callback);
67
75
  }).catch(e => {
68
76
  console.warn('wechat auth fail ', e);
69
77
  callback({
@@ -78,9 +86,35 @@ const WeChatLoginUtil = exports.WeChatLoginUtil = {
78
86
  const timestamp = String(Math.round(Date.now() / 1000));
79
87
  const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
80
88
  _reactNative.NativeModules.WeChat.authByScan(WeiXinId, nonceStr, timestamp, 'snsapi_userinfo', signature, '', ret => {
81
- var _ret$0$authCode, _ret$;
89
+ console.log('qrcode', ret === null || ret === void 0 ? void 0 : ret.qrcode);
90
+ new _reactNativeRootSiblings.default( /*#__PURE__*/_reactNative.default.createElement(_reactNative.View, {
91
+ style: {
92
+ top: 0,
93
+ right: 0,
94
+ bottom: 0,
95
+ left: 0,
96
+ backgroundColor: 'red',
97
+ justifyContent: 'center',
98
+ alignItems: 'center'
99
+ }
100
+ }, /*#__PURE__*/_reactNative.default.createElement(_reactNative.Image, {
101
+ source: {
102
+ uri: ret.qrcode
103
+ },
104
+ style: {
105
+ width: 200,
106
+ height: 200
107
+ }
108
+ })));
109
+ }, ret => {
82
110
  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);
111
+ if (!(ret !== null && ret !== void 0 && ret.authCode)) {
112
+ callback({
113
+ error: 'Auth code 获取失败'
114
+ });
115
+ return;
116
+ }
117
+ getUserInfo(WeiXinId, WeiXinSecret, ret === null || ret === void 0 ? void 0 : ret.authCode, callback);
84
118
  });
85
119
  }
86
120
  };
@@ -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","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
+ {"version":3,"names":["_reactNativeRootSiblings","_interopRequireDefault","require","_jsSha","_reactNative","_interopRequireWildcard","WeChat","_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","Tool","generateObjectId","String","Math","round","Date","now","signature","NativeModules","authByScan","qrcode","RootSiblings","createElement","View","style","top","right","bottom","left","backgroundColor","justifyContent","alignItems","Image","source","uri","width","height","authCode"],"sources":["WeChatLoginUtil.tsx"],"sourcesContent":["import RootSiblings from 'react-native-root-siblings';\nimport { sha1 } from 'js-sha1';\nimport React, { Image, NativeModules, View } 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 '&timestamp=' +\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\n NativeModules.WeChat.authByScan(\n WeiXinId,\n nonceStr,\n timestamp,\n 'snsapi_userinfo',\n signature,\n '',\n (ret: any) => {\n console.log('qrcode', ret?.qrcode);\n new RootSiblings(\n (\n <View\n style={{\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'red',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Image\n source={{ uri: ret.qrcode }}\n style={{ width: 200, height: 200 }}\n />\n </View>\n )\n );\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,6 @@
1
- import { NativeModules } from 'react-native';
1
+ import RootSiblings from 'react-native-root-siblings';
2
+ import { sha1 } from 'js-sha1';
3
+ import React, { Image, NativeModules, View } from 'react-native';
2
4
  import * as WeChat from 'react-native-wechat-lib';
3
5
  import { Tool } from './Tool';
4
6
 
@@ -16,10 +18,10 @@ const getSDKTicket = async accessToken => {
16
18
  return res.ticket;
17
19
  };
18
20
  const createSignature = (WeiXinId, nonceStr, sdkTicket, 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');
22
- return sha1(ret);
21
+ const origin = 'appid=' + WeiXinId + '&noncestr=' + nonceStr + '&sdk_ticket=' + sdkTicket + '&timestamp=' + timestamp;
22
+ const ret = sha1(origin);
23
+ console.log('wx scan signature', origin, ret);
24
+ return ret;
23
25
  };
24
26
  const getUserInfo = (WeiXinId, WeiXinSecret, code, callback) => {
25
27
  let accessTokenUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + WeiXinId + '&secret=' + WeiXinSecret + '&code=' + code + '&grant_type=authorization_code';
@@ -54,9 +56,14 @@ const getUserInfo = (WeiXinId, WeiXinSecret, code, callback) => {
54
56
  export const WeChatLoginUtil = {
55
57
  doLogin: (WeiXinId, WeiXinSecret, callback) => {
56
58
  WeChat.sendAuthRequest('snsapi_userinfo').then(ret => {
57
- var _ret$code;
58
59
  console.log('wechat auth success ', ret);
59
- getUserInfo(WeiXinId, WeiXinSecret, (_ret$code = ret === null || ret === void 0 ? void 0 : ret.code) !== null && _ret$code !== void 0 ? _ret$code : '', callback);
60
+ if (!(ret !== null && ret !== void 0 && ret.code)) {
61
+ callback({
62
+ error: 'Auth code 获取失败'
63
+ });
64
+ return;
65
+ }
66
+ getUserInfo(WeiXinId, WeiXinSecret, ret === null || ret === void 0 ? void 0 : ret.code, callback);
60
67
  }).catch(e => {
61
68
  console.warn('wechat auth fail ', e);
62
69
  callback({
@@ -71,9 +78,35 @@ export const WeChatLoginUtil = {
71
78
  const timestamp = String(Math.round(Date.now() / 1000));
72
79
  const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
73
80
  NativeModules.WeChat.authByScan(WeiXinId, nonceStr, timestamp, 'snsapi_userinfo', signature, '', ret => {
74
- var _ret$0$authCode, _ret$;
81
+ console.log('qrcode', ret === null || ret === void 0 ? void 0 : ret.qrcode);
82
+ new RootSiblings( /*#__PURE__*/React.createElement(View, {
83
+ style: {
84
+ top: 0,
85
+ right: 0,
86
+ bottom: 0,
87
+ left: 0,
88
+ backgroundColor: 'red',
89
+ justifyContent: 'center',
90
+ alignItems: 'center'
91
+ }
92
+ }, /*#__PURE__*/React.createElement(Image, {
93
+ source: {
94
+ uri: ret.qrcode
95
+ },
96
+ style: {
97
+ width: 200,
98
+ height: 200
99
+ }
100
+ })));
101
+ }, ret => {
75
102
  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);
103
+ if (!(ret !== null && ret !== void 0 && ret.authCode)) {
104
+ callback({
105
+ error: 'Auth code 获取失败'
106
+ });
107
+ return;
108
+ }
109
+ getUserInfo(WeiXinId, WeiXinSecret, ret === null || ret === void 0 ? void 0 : ret.authCode, callback);
77
110
  });
78
111
  }
79
112
  };
@@ -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","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
+ {"version":3,"names":["RootSiblings","sha1","React","Image","NativeModules","View","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","generateObjectId","String","Math","round","Date","now","signature","authByScan","qrcode","createElement","style","top","right","bottom","left","backgroundColor","justifyContent","alignItems","source","uri","width","height","authCode"],"sources":["WeChatLoginUtil.tsx"],"sourcesContent":["import RootSiblings from 'react-native-root-siblings';\nimport { sha1 } from 'js-sha1';\nimport React, { Image, NativeModules, View } 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 '&timestamp=' +\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\n NativeModules.WeChat.authByScan(\n WeiXinId,\n nonceStr,\n timestamp,\n 'snsapi_userinfo',\n signature,\n '',\n (ret: any) => {\n console.log('qrcode', ret?.qrcode);\n new RootSiblings(\n (\n <View\n style={{\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: 'red',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Image\n source={{ uri: ret.qrcode }}\n style={{ width: 200, height: 200 }}\n />\n </View>\n )\n );\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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norcy/react-native-toolkit",
3
- "version": "0.1.78",
3
+ "version": "0.1.80",
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",
@@ -73,6 +73,7 @@
73
73
  "react-native": "0.62.2",
74
74
  "react-native-device-info": "^10.0.2",
75
75
  "react-native-purchases": "5.6.0",
76
+ "react-native-root-siblings": "^4.0.0",
76
77
  "react-native-simple-toast": "^1.1.3",
77
78
  "react-native-wechat-lib": "^1.1.26",
78
79
  "release-it": "^13.5.8",
@@ -87,14 +88,15 @@
87
88
  "@react-navigation/native": "*",
88
89
  "@react-navigation/stack": "*",
89
90
  "@sentry/react-native": "*",
90
- "crypto-js": "*",
91
91
  "i18n-js": "*",
92
+ "js-sha1": "*",
92
93
  "leancloud-storage": "*",
93
94
  "query-string": "^8.0.0",
94
95
  "react": "*",
95
96
  "react-native": "*",
96
97
  "react-native-device-info": "*",
97
98
  "react-native-purchases": "*",
99
+ "react-native-root-siblings": "*",
98
100
  "react-native-simple-toast": "*",
99
101
  "react-native-wechat-lib": "*",
100
102
  "rn-fetch-blob": "*"
@@ -1,4 +1,6 @@
1
- import { NativeModules } from 'react-native';
1
+ import RootSiblings from 'react-native-root-siblings';
2
+ import { sha1 } from 'js-sha1';
3
+ import React, { Image, NativeModules, View } from 'react-native';
2
4
  import * as WeChat from 'react-native-wechat-lib';
3
5
  import { Tool } from './Tool';
4
6
 
@@ -29,7 +31,7 @@ const createSignature = (
29
31
  sdkTicket: string,
30
32
  timestamp: string
31
33
  ) => {
32
- const ret =
34
+ const origin =
33
35
  'appid=' +
34
36
  WeiXinId +
35
37
  '&noncestr=' +
@@ -38,9 +40,9 @@ const createSignature = (
38
40
  sdkTicket +
39
41
  '&timestamp=' +
40
42
  timestamp;
41
- console.log('wx scan signature', ret);
42
- const sha1 = require('crypto-js/sha1');
43
- return sha1(ret);
43
+ const ret = sha1(origin);
44
+ console.log('wx scan signature', origin, ret);
45
+ return ret;
44
46
  };
45
47
 
46
48
  const getUserInfo = (
@@ -97,7 +99,11 @@ export const WeChatLoginUtil = {
97
99
  WeChat.sendAuthRequest('snsapi_userinfo')
98
100
  .then((ret) => {
99
101
  console.log('wechat auth success ', ret);
100
- getUserInfo(WeiXinId, WeiXinSecret, ret?.code ?? '', callback);
102
+ if (!ret?.code) {
103
+ callback({ error: 'Auth code 获取失败' });
104
+ return;
105
+ }
106
+ getUserInfo(WeiXinId, WeiXinSecret, ret?.code, callback);
101
107
  })
102
108
  .catch((e: any) => {
103
109
  console.warn('wechat auth fail ', e);
@@ -115,6 +121,7 @@ export const WeChatLoginUtil = {
115
121
  const nonceStr = Tool.generateObjectId();
116
122
  const timestamp = String(Math.round(Date.now() / 1000));
117
123
  const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
124
+
118
125
  NativeModules.WeChat.authByScan(
119
126
  WeiXinId,
120
127
  nonceStr,
@@ -122,9 +129,36 @@ export const WeChatLoginUtil = {
122
129
  'snsapi_userinfo',
123
130
  signature,
124
131
  '',
132
+ (ret: any) => {
133
+ console.log('qrcode', ret?.qrcode);
134
+ new RootSiblings(
135
+ (
136
+ <View
137
+ style={{
138
+ top: 0,
139
+ right: 0,
140
+ bottom: 0,
141
+ left: 0,
142
+ backgroundColor: 'red',
143
+ justifyContent: 'center',
144
+ alignItems: 'center',
145
+ }}
146
+ >
147
+ <Image
148
+ source={{ uri: ret.qrcode }}
149
+ style={{ width: 200, height: 200 }}
150
+ />
151
+ </View>
152
+ )
153
+ );
154
+ },
125
155
  (ret: any) => {
126
156
  console.log('scan result', ret);
127
- getUserInfo(WeiXinId, WeiXinSecret, ret[0]?.authCode ?? '', callback);
157
+ if (!ret?.authCode) {
158
+ callback({ error: 'Auth code 获取失败' });
159
+ return;
160
+ }
161
+ getUserInfo(WeiXinId, WeiXinSecret, ret?.authCode, callback);
128
162
  }
129
163
  );
130
164
  },