@norcy/react-native-toolkit 0.1.77 → 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.
- package/lib/commonjs/WeChatLoginUtil.js +39 -33
- package/lib/commonjs/WeChatLoginUtil.js.map +1 -1
- package/lib/module/WeChatLoginUtil.js +38 -32
- package/lib/module/WeChatLoginUtil.js.map +1 -1
- package/lib/typescript/WeChatLoginUtil.d.ts +1 -1
- package/package.json +3 -3
- package/src/WeChatLoginUtil.ts +60 -47
- package/yarn.lock +5 -5
|
@@ -4,7 +4,6 @@ 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");
|
|
@@ -26,40 +25,45 @@ const getSDKTicket = async accessToken => {
|
|
|
26
25
|
const createSignature = (WeiXinId, nonceStr, sdkTicket, timestamp) => {
|
|
27
26
|
const ret = 'appid=' + WeiXinId + '&noncestr=' + nonceStr + '&sdk_ticket=' + sdkTicket + '×tamp=' + timestamp;
|
|
28
27
|
console.log('wx scan signature', ret);
|
|
29
|
-
|
|
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
|
+
});
|
|
30
60
|
};
|
|
31
61
|
const WeChatLoginUtil = exports.WeChatLoginUtil = {
|
|
32
62
|
doLogin: (WeiXinId, WeiXinSecret, callback) => {
|
|
33
63
|
WeChat.sendAuthRequest('snsapi_userinfo').then(ret => {
|
|
64
|
+
var _ret$code;
|
|
34
65
|
console.log('wechat auth success ', ret);
|
|
35
|
-
|
|
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);
|
|
59
|
-
callback({
|
|
60
|
-
error: e
|
|
61
|
-
});
|
|
62
|
-
});
|
|
66
|
+
getUserInfo(WeiXinId, WeiXinSecret, (_ret$code = ret === null || ret === void 0 ? void 0 : ret.code) !== null && _ret$code !== void 0 ? _ret$code : '', callback);
|
|
63
67
|
}).catch(e => {
|
|
64
68
|
console.warn('wechat auth fail ', e);
|
|
65
69
|
callback({
|
|
@@ -67,14 +71,16 @@ const WeChatLoginUtil = exports.WeChatLoginUtil = {
|
|
|
67
71
|
});
|
|
68
72
|
});
|
|
69
73
|
},
|
|
70
|
-
doLoginByScan: async (WeiXinId, WeiXinSecret) => {
|
|
71
|
-
const
|
|
72
|
-
const ticket = await getSDKTicket(
|
|
74
|
+
doLoginByScan: async (WeiXinId, WeiXinSecret, callback) => {
|
|
75
|
+
const accessToken = await getAccessToken(WeiXinId, WeiXinSecret);
|
|
76
|
+
const ticket = await getSDKTicket(accessToken);
|
|
73
77
|
const nonceStr = _Tool.Tool.generateObjectId();
|
|
74
78
|
const timestamp = String(Math.round(Date.now() / 1000));
|
|
75
79
|
const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
|
|
76
80
|
_reactNative.NativeModules.WeChat.authByScan(WeiXinId, nonceStr, timestamp, 'snsapi_userinfo', signature, '', ret => {
|
|
81
|
+
var _ret$0$authCode, _ret$;
|
|
77
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);
|
|
78
84
|
});
|
|
79
85
|
}
|
|
80
86
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
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 '×tamp=' +\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,3 @@
|
|
|
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';
|
|
@@ -19,40 +18,45 @@ const getSDKTicket = async accessToken => {
|
|
|
19
18
|
const createSignature = (WeiXinId, nonceStr, sdkTicket, timestamp) => {
|
|
20
19
|
const ret = 'appid=' + WeiXinId + '&noncestr=' + nonceStr + '&sdk_ticket=' + sdkTicket + '×tamp=' + timestamp;
|
|
21
20
|
console.log('wx scan signature', ret);
|
|
21
|
+
const sha1 = require('crypto-js/sha1');
|
|
22
22
|
return sha1(ret);
|
|
23
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
|
+
};
|
|
24
54
|
export const WeChatLoginUtil = {
|
|
25
55
|
doLogin: (WeiXinId, WeiXinSecret, callback) => {
|
|
26
56
|
WeChat.sendAuthRequest('snsapi_userinfo').then(ret => {
|
|
57
|
+
var _ret$code;
|
|
27
58
|
console.log('wechat auth success ', ret);
|
|
28
|
-
|
|
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);
|
|
52
|
-
callback({
|
|
53
|
-
error: e
|
|
54
|
-
});
|
|
55
|
-
});
|
|
59
|
+
getUserInfo(WeiXinId, WeiXinSecret, (_ret$code = ret === null || ret === void 0 ? void 0 : ret.code) !== null && _ret$code !== void 0 ? _ret$code : '', callback);
|
|
56
60
|
}).catch(e => {
|
|
57
61
|
console.warn('wechat auth fail ', e);
|
|
58
62
|
callback({
|
|
@@ -60,14 +64,16 @@ export const WeChatLoginUtil = {
|
|
|
60
64
|
});
|
|
61
65
|
});
|
|
62
66
|
},
|
|
63
|
-
doLoginByScan: async (WeiXinId, WeiXinSecret) => {
|
|
64
|
-
const
|
|
65
|
-
const ticket = await getSDKTicket(
|
|
67
|
+
doLoginByScan: async (WeiXinId, WeiXinSecret, callback) => {
|
|
68
|
+
const accessToken = await getAccessToken(WeiXinId, WeiXinSecret);
|
|
69
|
+
const ticket = await getSDKTicket(accessToken);
|
|
66
70
|
const nonceStr = Tool.generateObjectId();
|
|
67
71
|
const timestamp = String(Math.round(Date.now() / 1000));
|
|
68
72
|
const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
|
|
69
73
|
NativeModules.WeChat.authByScan(WeiXinId, nonceStr, timestamp, 'snsapi_userinfo', signature, '', ret => {
|
|
74
|
+
var _ret$0$authCode, _ret$;
|
|
70
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);
|
|
71
77
|
});
|
|
72
78
|
}
|
|
73
79
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
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 '×tamp=' +\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.
|
|
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": "*",
|
package/src/WeChatLoginUtil.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
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';
|
|
@@ -40,56 +39,65 @@ const createSignature = (
|
|
|
40
39
|
'×tamp=' +
|
|
41
40
|
timestamp;
|
|
42
41
|
console.log('wx scan signature', ret);
|
|
42
|
+
const sha1 = require('crypto-js/sha1');
|
|
43
43
|
return sha1(ret);
|
|
44
44
|
};
|
|
45
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
|
+
|
|
46
95
|
export const WeChatLoginUtil = {
|
|
47
96
|
doLogin: (WeiXinId: string, WeiXinSecret: string, callback: Function) => {
|
|
48
97
|
WeChat.sendAuthRequest('snsapi_userinfo')
|
|
49
98
|
.then((ret) => {
|
|
50
99
|
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
|
-
});
|
|
100
|
+
getUserInfo(WeiXinId, WeiXinSecret, ret?.code ?? '', callback);
|
|
93
101
|
})
|
|
94
102
|
.catch((e: any) => {
|
|
95
103
|
console.warn('wechat auth fail ', e);
|
|
@@ -97,9 +105,13 @@ export const WeChatLoginUtil = {
|
|
|
97
105
|
});
|
|
98
106
|
},
|
|
99
107
|
|
|
100
|
-
doLoginByScan: async (
|
|
101
|
-
|
|
102
|
-
|
|
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);
|
|
103
115
|
const nonceStr = Tool.generateObjectId();
|
|
104
116
|
const timestamp = String(Math.round(Date.now() / 1000));
|
|
105
117
|
const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
|
|
@@ -110,8 +122,9 @@ export const WeChatLoginUtil = {
|
|
|
110
122
|
'snsapi_userinfo',
|
|
111
123
|
signature,
|
|
112
124
|
'',
|
|
113
|
-
(ret:
|
|
125
|
+
(ret: any) => {
|
|
114
126
|
console.log('scan result', ret);
|
|
127
|
+
getUserInfo(WeiXinId, WeiXinSecret, ret[0]?.authCode ?? '', callback);
|
|
115
128
|
}
|
|
116
129
|
);
|
|
117
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"
|