@norcy/react-native-toolkit 0.1.77 → 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.
@@ -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");
8
7
  var _reactNative = require("react-native");
9
8
  var WeChat = _interopRequireWildcard(require("react-native-wechat-lib"));
10
9
  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
@@ -24,42 +24,52 @@ const getSDKTicket = async accessToken => {
24
24
  return res.ticket;
25
25
  };
26
26
  const createSignature = (WeiXinId, nonceStr, sdkTicket, timestamp) => {
27
- const ret = 'appid=' + WeiXinId + '&noncestr=' + nonceStr + '&sdk_ticket=' + sdkTicket + '&timestamp=' + timestamp;
28
- console.log('wx scan signature', ret);
29
- return (0, _jsSha.sha1)(ret);
27
+ const origin = 'appid=' + WeiXinId + '&noncestr=' + nonceStr + '&sdk_ticket=' + sdkTicket + '&timestamp=' + timestamp;
28
+ const ret = (0, _jsSha.sha1)(origin);
29
+ console.log('wx scan signature', origin, ret);
30
+ return ret;
31
+ };
32
+ const getUserInfo = (WeiXinId, WeiXinSecret, code, callback) => {
33
+ let accessTokenUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + WeiXinId + '&secret=' + WeiXinSecret + '&code=' + code + '&grant_type=authorization_code';
34
+ fetch(accessTokenUrl).then(res => {
35
+ return res.json();
36
+ }).then(res => {
37
+ console.log('wechat get access code success: ', res.access_token);
38
+ let userInfoUrl = 'https://api.weixin.qq.com/sns/userinfo?access_token=' + res.access_token + '&openid=' + res.openid;
39
+ fetch(userInfoUrl).then(res2 => {
40
+ return res2.json();
41
+ }).then(json => {
42
+ console.log('wechat get user info success: ', json);
43
+ callback({
44
+ nickname: json.nickname,
45
+ headimgurl: json.headimgurl,
46
+ openid: json.openid,
47
+ unionid: json.unionid
48
+ });
49
+ }).catch(e => {
50
+ console.warn('wechat get user info fail ', e);
51
+ callback({
52
+ error: e
53
+ });
54
+ });
55
+ }).catch(e => {
56
+ console.warn('wechat get access code fail ', e);
57
+ callback({
58
+ error: e
59
+ });
60
+ });
30
61
  };
31
62
  const WeChatLoginUtil = exports.WeChatLoginUtil = {
32
63
  doLogin: (WeiXinId, WeiXinSecret, callback) => {
33
64
  WeChat.sendAuthRequest('snsapi_userinfo').then(ret => {
34
65
  console.log('wechat auth success ', ret);
35
- let accessTokenUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + WeiXinId + '&secret=' + WeiXinSecret + '&code=' + ret.code + '&grant_type=authorization_code';
36
- fetch(accessTokenUrl).then(res => {
37
- return res.json();
38
- }).then(res => {
39
- console.log('wechat get access code success: ', res.access_token);
40
- let userInfoUrl = 'https://api.weixin.qq.com/sns/userinfo?access_token=' + res.access_token + '&openid=' + res.openid;
41
- fetch(userInfoUrl).then(res2 => {
42
- return res2.json();
43
- }).then(json => {
44
- console.log('wechat get user info success: ', json);
45
- callback({
46
- nickname: json.nickname,
47
- headimgurl: json.headimgurl,
48
- openid: json.openid,
49
- unionid: json.unionid
50
- });
51
- }).catch(e => {
52
- console.warn('wechat get user info fail ', e);
53
- callback({
54
- error: e
55
- });
56
- });
57
- }).catch(e => {
58
- console.warn('wechat get access code fail ', e);
66
+ if (!(ret !== null && ret !== void 0 && ret.code)) {
59
67
  callback({
60
- error: e
68
+ error: 'Auth code 获取失败'
61
69
  });
62
- });
70
+ return;
71
+ }
72
+ getUserInfo(WeiXinId, WeiXinSecret, ret === null || ret === void 0 ? void 0 : ret.code, callback);
63
73
  }).catch(e => {
64
74
  console.warn('wechat auth fail ', e);
65
75
  callback({
@@ -67,14 +77,22 @@ const WeChatLoginUtil = exports.WeChatLoginUtil = {
67
77
  });
68
78
  });
69
79
  },
70
- doLoginByScan: async (WeiXinId, WeiXinSecret) => {
71
- const token = await getAccessToken(WeiXinId, WeiXinSecret);
72
- const ticket = await getSDKTicket(token);
80
+ doLoginByScan: async (WeiXinId, WeiXinSecret, callback) => {
81
+ const accessToken = await getAccessToken(WeiXinId, WeiXinSecret);
82
+ const ticket = await getSDKTicket(accessToken);
73
83
  const nonceStr = _Tool.Tool.generateObjectId();
74
84
  const timestamp = String(Math.round(Date.now() / 1000));
75
85
  const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
76
86
  _reactNative.NativeModules.WeChat.authByScan(WeiXinId, nonceStr, timestamp, 'snsapi_userinfo', signature, '', ret => {
87
+ var _ret$, _ret$2;
77
88
  console.log('scan result', ret);
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);
78
96
  });
79
97
  }
80
98
  };
@@ -1 +1 @@
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","ret","console","log","sha1","WeChatLoginUtil","exports","doLogin","callback","sendAuthRequest","then","accessTokenUrl","code","userInfoUrl","openid","res2","nickname","headimgurl","unionid","catch","e","warn","error","doLoginByScan","token","Tool","generateObjectId","String","Math","round","Date","now","signature","NativeModules","authByScan"],"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 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 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(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: []) => {\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","_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 '&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 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,7 +1,7 @@
1
- import { sha1 } from 'js-sha1';
2
1
  import { NativeModules } from 'react-native';
3
2
  import * as WeChat from 'react-native-wechat-lib';
4
3
  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) => {
@@ -17,42 +17,52 @@ const getSDKTicket = async accessToken => {
17
17
  return res.ticket;
18
18
  };
19
19
  const createSignature = (WeiXinId, nonceStr, sdkTicket, timestamp) => {
20
- const ret = 'appid=' + WeiXinId + '&noncestr=' + nonceStr + '&sdk_ticket=' + sdkTicket + '&timestamp=' + timestamp;
21
- console.log('wx scan signature', ret);
22
- return sha1(ret);
20
+ const origin = 'appid=' + WeiXinId + '&noncestr=' + nonceStr + '&sdk_ticket=' + sdkTicket + '&timestamp=' + timestamp;
21
+ const ret = sha1(origin);
22
+ console.log('wx scan signature', origin, ret);
23
+ return ret;
24
+ };
25
+ const getUserInfo = (WeiXinId, WeiXinSecret, code, callback) => {
26
+ let accessTokenUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + WeiXinId + '&secret=' + WeiXinSecret + '&code=' + code + '&grant_type=authorization_code';
27
+ fetch(accessTokenUrl).then(res => {
28
+ return res.json();
29
+ }).then(res => {
30
+ console.log('wechat get access code success: ', res.access_token);
31
+ let userInfoUrl = 'https://api.weixin.qq.com/sns/userinfo?access_token=' + res.access_token + '&openid=' + res.openid;
32
+ fetch(userInfoUrl).then(res2 => {
33
+ return res2.json();
34
+ }).then(json => {
35
+ console.log('wechat get user info success: ', json);
36
+ callback({
37
+ nickname: json.nickname,
38
+ headimgurl: json.headimgurl,
39
+ openid: json.openid,
40
+ unionid: json.unionid
41
+ });
42
+ }).catch(e => {
43
+ console.warn('wechat get user info fail ', e);
44
+ callback({
45
+ error: e
46
+ });
47
+ });
48
+ }).catch(e => {
49
+ console.warn('wechat get access code fail ', e);
50
+ callback({
51
+ error: e
52
+ });
53
+ });
23
54
  };
24
55
  export const WeChatLoginUtil = {
25
56
  doLogin: (WeiXinId, WeiXinSecret, callback) => {
26
57
  WeChat.sendAuthRequest('snsapi_userinfo').then(ret => {
27
58
  console.log('wechat auth success ', ret);
28
- let accessTokenUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + WeiXinId + '&secret=' + WeiXinSecret + '&code=' + ret.code + '&grant_type=authorization_code';
29
- fetch(accessTokenUrl).then(res => {
30
- return res.json();
31
- }).then(res => {
32
- console.log('wechat get access code success: ', res.access_token);
33
- let userInfoUrl = 'https://api.weixin.qq.com/sns/userinfo?access_token=' + res.access_token + '&openid=' + res.openid;
34
- fetch(userInfoUrl).then(res2 => {
35
- return res2.json();
36
- }).then(json => {
37
- console.log('wechat get user info success: ', json);
38
- callback({
39
- nickname: json.nickname,
40
- headimgurl: json.headimgurl,
41
- openid: json.openid,
42
- unionid: json.unionid
43
- });
44
- }).catch(e => {
45
- console.warn('wechat get user info fail ', e);
46
- callback({
47
- error: e
48
- });
49
- });
50
- }).catch(e => {
51
- console.warn('wechat get access code fail ', e);
59
+ if (!(ret !== null && ret !== void 0 && ret.code)) {
52
60
  callback({
53
- error: e
61
+ error: 'Auth code 获取失败'
54
62
  });
55
- });
63
+ return;
64
+ }
65
+ getUserInfo(WeiXinId, WeiXinSecret, ret === null || ret === void 0 ? void 0 : ret.code, callback);
56
66
  }).catch(e => {
57
67
  console.warn('wechat auth fail ', e);
58
68
  callback({
@@ -60,14 +70,22 @@ export const WeChatLoginUtil = {
60
70
  });
61
71
  });
62
72
  },
63
- doLoginByScan: async (WeiXinId, WeiXinSecret) => {
64
- const token = await getAccessToken(WeiXinId, WeiXinSecret);
65
- const ticket = await getSDKTicket(token);
73
+ doLoginByScan: async (WeiXinId, WeiXinSecret, callback) => {
74
+ const accessToken = await getAccessToken(WeiXinId, WeiXinSecret);
75
+ const ticket = await getSDKTicket(accessToken);
66
76
  const nonceStr = Tool.generateObjectId();
67
77
  const timestamp = String(Math.round(Date.now() / 1000));
68
78
  const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
69
79
  NativeModules.WeChat.authByScan(WeiXinId, nonceStr, timestamp, 'snsapi_userinfo', signature, '', ret => {
80
+ var _ret$, _ret$2;
70
81
  console.log('scan result', ret);
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);
71
89
  });
72
90
  }
73
91
  };
@@ -1 +1 @@
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","ret","console","log","WeChatLoginUtil","doLogin","callback","sendAuthRequest","then","accessTokenUrl","code","userInfoUrl","openid","res2","nickname","headimgurl","unionid","catch","e","warn","error","doLoginByScan","token","generateObjectId","String","Math","round","Date","now","signature","authByScan"],"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 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 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(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: []) => {\n console.log('scan result', ret);\n }\n );\n },\n};\n"],"mappings":"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"}
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 '&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 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,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.77",
3
+ "version": "0.1.79",
4
4
  "description": "My Toolkit",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -1,7 +1,7 @@
1
- import { sha1 } from 'js-sha1';
2
1
  import { NativeModules } from 'react-native';
3
2
  import * as WeChat from 'react-native-wechat-lib';
4
3
  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) => {
@@ -30,7 +30,7 @@ const createSignature = (
30
30
  sdkTicket: string,
31
31
  timestamp: string
32
32
  ) => {
33
- const ret =
33
+ const origin =
34
34
  'appid=' +
35
35
  WeiXinId +
36
36
  '&noncestr=' +
@@ -39,8 +39,58 @@ const createSignature = (
39
39
  sdkTicket +
40
40
  '&timestamp=' +
41
41
  timestamp;
42
- console.log('wx scan signature', ret);
43
- return sha1(ret);
42
+ const ret = sha1(origin);
43
+ console.log('wx scan signature', origin, ret);
44
+ return ret;
45
+ };
46
+
47
+ const getUserInfo = (
48
+ WeiXinId: string,
49
+ WeiXinSecret: string,
50
+ code: string,
51
+ callback: Function
52
+ ) => {
53
+ let accessTokenUrl =
54
+ 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' +
55
+ WeiXinId +
56
+ '&secret=' +
57
+ WeiXinSecret +
58
+ '&code=' +
59
+ code +
60
+ '&grant_type=authorization_code';
61
+ fetch(accessTokenUrl)
62
+ .then((res) => {
63
+ return res.json();
64
+ })
65
+ .then((res) => {
66
+ console.log('wechat get access code success: ', res.access_token);
67
+ let userInfoUrl =
68
+ 'https://api.weixin.qq.com/sns/userinfo?access_token=' +
69
+ res.access_token +
70
+ '&openid=' +
71
+ res.openid;
72
+ fetch(userInfoUrl)
73
+ .then((res2) => {
74
+ return res2.json();
75
+ })
76
+ .then((json) => {
77
+ console.log('wechat get user info success: ', json);
78
+ callback({
79
+ nickname: json.nickname,
80
+ headimgurl: json.headimgurl,
81
+ openid: json.openid,
82
+ unionid: json.unionid,
83
+ });
84
+ })
85
+ .catch((e) => {
86
+ console.warn('wechat get user info fail ', e);
87
+ callback({ error: e });
88
+ });
89
+ })
90
+ .catch((e) => {
91
+ console.warn('wechat get access code fail ', e);
92
+ callback({ error: e });
93
+ });
44
94
  };
45
95
 
46
96
  export const WeChatLoginUtil = {
@@ -48,48 +98,11 @@ export const WeChatLoginUtil = {
48
98
  WeChat.sendAuthRequest('snsapi_userinfo')
49
99
  .then((ret) => {
50
100
  console.log('wechat auth success ', ret);
51
-
52
- let accessTokenUrl =
53
- 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' +
54
- WeiXinId +
55
- '&secret=' +
56
- WeiXinSecret +
57
- '&code=' +
58
- ret.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
- });
101
+ if (!ret?.code) {
102
+ callback({ error: 'Auth code 获取失败' });
103
+ return;
104
+ }
105
+ getUserInfo(WeiXinId, WeiXinSecret, ret?.code, callback);
93
106
  })
94
107
  .catch((e: any) => {
95
108
  console.warn('wechat auth fail ', e);
@@ -97,9 +110,13 @@ export const WeChatLoginUtil = {
97
110
  });
98
111
  },
99
112
 
100
- doLoginByScan: async (WeiXinId: string, WeiXinSecret: string) => {
101
- const token = await getAccessToken(WeiXinId, WeiXinSecret);
102
- const ticket = await getSDKTicket(token);
113
+ doLoginByScan: async (
114
+ WeiXinId: string,
115
+ WeiXinSecret: string,
116
+ callback: Function
117
+ ) => {
118
+ const accessToken = await getAccessToken(WeiXinId, WeiXinSecret);
119
+ const ticket = await getSDKTicket(accessToken);
103
120
  const nonceStr = Tool.generateObjectId();
104
121
  const timestamp = String(Math.round(Date.now() / 1000));
105
122
  const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
@@ -110,8 +127,13 @@ export const WeChatLoginUtil = {
110
127
  'snsapi_userinfo',
111
128
  signature,
112
129
  '',
113
- (ret: []) => {
130
+ (ret: any) => {
114
131
  console.log('scan result', ret);
132
+ if (!ret[0]?.authCode) {
133
+ callback({ error: 'Auth code 获取失败' });
134
+ return;
135
+ }
136
+ getUserInfo(WeiXinId, WeiXinSecret, ret[0]?.authCode, callback);
115
137
  }
116
138
  );
117
139
  },