@norcy/react-native-toolkit 0.1.81 → 0.1.83
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/LoginManager.js +43 -4
- package/lib/commonjs/LoginManager.js.map +1 -1
- package/lib/commonjs/WeChatLoginUtil.js +3 -2
- package/lib/commonjs/WeChatLoginUtil.js.map +1 -1
- package/lib/commonjs/constant.js +1 -0
- package/lib/commonjs/constant.js.map +1 -1
- package/lib/module/LoginManager.js +43 -4
- package/lib/module/LoginManager.js.map +1 -1
- package/lib/module/WeChatLoginUtil.js +4 -3
- package/lib/module/WeChatLoginUtil.js.map +1 -1
- package/lib/module/constant.js +1 -0
- package/lib/module/constant.js.map +1 -1
- package/lib/typescript/LoginManager.d.ts +1 -1
- package/lib/typescript/constant.d.ts +2 -1
- package/package.json +1 -1
- package/src/LoginManager.ts +45 -1
- package/src/WeChatLoginUtil.ts +8 -4
- package/src/constant.ts +1 -0
|
@@ -131,6 +131,7 @@ const LoginManager = exports.LoginManager = {
|
|
|
131
131
|
login: async function (type) {
|
|
132
132
|
let devAuthData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
133
133
|
let loadingCallback = arguments.length > 2 ? arguments[2] : undefined;
|
|
134
|
+
let qrcodeCallback = arguments.length > 3 ? arguments[3] : undefined;
|
|
134
135
|
// 如果之前已经鉴权过,则直接使用上次鉴权的 AuthData
|
|
135
136
|
const cuurentUser = await AV.User.currentAsync();
|
|
136
137
|
if (cuurentUser) {
|
|
@@ -241,6 +242,44 @@ const LoginManager = exports.LoginManager = {
|
|
|
241
242
|
});
|
|
242
243
|
}
|
|
243
244
|
});
|
|
245
|
+
} else if (type === _constant.LoginType.LoginTypeWeChatScan) {
|
|
246
|
+
_WeChatLoginUtil.WeChatLoginUtil.doLoginByScan(_Tool.ToolkitConfig.WeiXinId, _Tool.ToolkitConfig.WeiXinSecret, qrcodeCallback, _ref7 => {
|
|
247
|
+
let {
|
|
248
|
+
nickname,
|
|
249
|
+
headimgurl,
|
|
250
|
+
openid,
|
|
251
|
+
unionid,
|
|
252
|
+
error
|
|
253
|
+
} = _ref7;
|
|
254
|
+
if (error) {
|
|
255
|
+
onLoginFinish({
|
|
256
|
+
error
|
|
257
|
+
});
|
|
258
|
+
} else {
|
|
259
|
+
let userData = {
|
|
260
|
+
nickname: nickname,
|
|
261
|
+
headimgurl: headimgurl,
|
|
262
|
+
authData: {
|
|
263
|
+
openid: openid,
|
|
264
|
+
unionid: unionid,
|
|
265
|
+
access_token: openid,
|
|
266
|
+
expires_in: 99999999,
|
|
267
|
+
loginType: 'wechat'
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
loadingCallback && loadingCallback();
|
|
271
|
+
doLeanCloudLogin(userData.authData, userData, _ref8 => {
|
|
272
|
+
let {
|
|
273
|
+
user,
|
|
274
|
+
error: error2
|
|
275
|
+
} = _ref8;
|
|
276
|
+
onLoginFinish({
|
|
277
|
+
user,
|
|
278
|
+
error: error2
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
});
|
|
244
283
|
} else if (type === _constant.LoginType.LoginTypeVisitor) {
|
|
245
284
|
const uniqueId = (0, _reactNativeDeviceInfo.getUniqueIdSync)();
|
|
246
285
|
console.log(uniqueId);
|
|
@@ -254,11 +293,11 @@ const LoginManager = exports.LoginManager = {
|
|
|
254
293
|
}
|
|
255
294
|
};
|
|
256
295
|
loadingCallback && loadingCallback();
|
|
257
|
-
doLeanCloudLogin(userData.authData, userData,
|
|
296
|
+
doLeanCloudLogin(userData.authData, userData, _ref9 => {
|
|
258
297
|
let {
|
|
259
298
|
user,
|
|
260
299
|
error
|
|
261
|
-
} =
|
|
300
|
+
} = _ref9;
|
|
262
301
|
onLoginFinish({
|
|
263
302
|
user,
|
|
264
303
|
error
|
|
@@ -340,10 +379,10 @@ const LoginManager = exports.LoginManager = {
|
|
|
340
379
|
return _PrefData.PrefData.getValue(_PrefData.BuildInPrefs.RegisterInThisDevice);
|
|
341
380
|
},
|
|
342
381
|
fetchWeChatAvatar: callback => {
|
|
343
|
-
_WeChatLoginUtil.WeChatLoginUtil.doLogin(_Tool.ToolkitConfig.WeiXinId, _Tool.ToolkitConfig.WeiXinSecret,
|
|
382
|
+
_WeChatLoginUtil.WeChatLoginUtil.doLogin(_Tool.ToolkitConfig.WeiXinId, _Tool.ToolkitConfig.WeiXinSecret, _ref10 => {
|
|
344
383
|
let {
|
|
345
384
|
headimgurl
|
|
346
|
-
} =
|
|
385
|
+
} = _ref10;
|
|
347
386
|
callback({
|
|
348
387
|
headimgurl
|
|
349
388
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_reactNativeDeviceInfo","_AppleLoginUtil","_Notification","_PrefData","_Tool","_WeChatLoginUtil","_constant","AV","CURRENT_USER","AVUserToLocalUser","user","nickname","get","email","headimgurl","type","AVUser","onLoginFinish","_ref","isAuto","error","code","data","PrefData","setValue","BuildInPrefs","LastLoginType","Notification","postNotification","doLeanCloudLogin","authData","userData","callback","console","log","loginType","loginTypeNum","LoginType","LoginTypeApple","LoginTypeWeChat","LoginTypeVisitor","User","loginWithAuthData","failOnNotExist","then","newUser","setEmail","set","Platform","OS","isNew","RegisterInThisDevice","error2","LoginManager","exports","autoLogin","currentAsync","login","devAuthData","arguments","length","undefined","loadingCallback","cuurentUser","__DEV__","_ref2","identityToken","AppleLoginUtil","requestAppleUserForLogin","userId","openid","access_token","expires_in","fetchAndUpdateCredentialState","_ref3","result","LoginState","AUTHORIZED","_ref4","loginUser","error3","WeChatLoginUtil","doLogin","ToolkitConfig","WeiXinId","WeiXinSecret","_ref5","unionid","_ref6","uniqueId","getUniqueIdSync","_ref7","logOut","isLogin","currentUser","isVisitor","_LoginManager$current","batchUpdateUser","keys","values","oldValues","i","push","save","e","updateUser","key","value","deleteUser","requestDeleteAccount","destroy","lastLoginType","getValue","isRegisterInThisDevice","fetchWeChatAvatar","_ref8","getRegisterDays","_LoginManager$current2","createTime","getCreatedAt","diff","Date","getTime","diffDay","Math","max","ceil"],"sources":["LoginManager.ts"],"sourcesContent":["import { User } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { getUniqueIdSync } from 'react-native-device-info';\nimport { AppleLoginUtil } from './AppleLoginUtil';\nimport { Notification } from './Notification';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { ToolkitConfig } from './Tool';\nimport { WeChatLoginUtil } from './WeChatLoginUtil';\nimport {\n LoginAuthDataType,\n LoginState,\n LoginType,\n LoginUserDataType,\n UserType,\n} from './constant';\n\ntype FetchImageFunctionType = ({ headimgurl }: { headimgurl: string }) => void;\nexport type LoginResultDataType = {\n isAuto?: boolean;\n user?: UserType;\n error?: string | object;\n code?: string;\n};\n\nconst AV = require('leancloud-storage');\n\nlet CURRENT_USER: UserType | null = null;\n\nconst AVUserToLocalUser = (user: User) => {\n return {\n nickname: user.get('nickname'),\n email: user.get('email'),\n headimgurl: user.get('headimgurl'),\n type: user.get('type'),\n AVUser: user,\n };\n};\n\nconst onLoginFinish = ({\n isAuto = false,\n user,\n error,\n code,\n}: LoginResultDataType) => {\n const data = { isAuto, user, error, code };\n if (user) {\n PrefData.setValue(BuildInPrefs.LastLoginType, user.type);\n }\n Notification.postNotification('onLogin', data);\n};\n\nconst doLeanCloudLogin = async (\n authData: LoginAuthDataType,\n userData: LoginUserDataType | undefined,\n callback: ({ user, error }: { user?: UserType; error?: any }) => void\n) => {\n console.log('Lean Cloud 开始登录', userData);\n // loginType 空说明是老用户\n const loginType = authData.loginType ? authData.loginType : 'apple';\n let loginTypeNum = LoginType.LoginTypeApple;\n if (loginType === 'wechat') {\n loginTypeNum = LoginType.LoginTypeWeChat;\n } else if (loginType === 'visitor') {\n loginTypeNum = LoginType.LoginTypeVisitor;\n }\n\n AV.User.loginWithAuthData(authData, loginType, { failOnNotExist: true }).then(\n (user: User) => {\n // 登录成功\n console.log('Lean Cloud 登录成功');\n // 每次重新鉴权都更新头像和昵称,避免微信头像过期\n // if (userData?.nickname) {\n // user.set('nickname', userData?.nickname);\n // }\n // if (userData?.headimgurl) {\n // user.set('headimgurl', userData?.headimgurl);\n // }\n // user.save();\n CURRENT_USER = AVUserToLocalUser(user);\n callback({ user: CURRENT_USER });\n },\n (error: any) => {\n if (error.code === 211) {\n // 创建用户,并补充资料\n console.log('创建用户,并补充资料');\n const newUser = new AV.User();\n const email = userData?.email;\n if (email) {\n newUser.setEmail(email);\n }\n newUser.set('nickname', userData?.nickname);\n newUser.set('headimgurl', userData?.headimgurl);\n newUser.set('type', loginTypeNum);\n if (Platform.OS === 'android') {\n newUser.set('source', 2);\n }\n newUser.loginWithAuthData(authData, loginType).then(\n (user: User) => {\n // 登录成功\n console.log('Lean Cloud 注册成功');\n CURRENT_USER = AVUserToLocalUser(user);\n CURRENT_USER.isNew = true;\n // 标记为当前用户是在本机注册的 TODO\n PrefData.setValue(BuildInPrefs.RegisterInThisDevice, true);\n callback({ user: CURRENT_USER });\n },\n (error2: any) => {\n // 登录失败\n console.log('Lean Cloud 登录失败', error2);\n callback({ error: error2 });\n }\n );\n } else {\n // 登录失败\n console.log('Lean Cloud 登录失败', error);\n callback({ error: error });\n }\n }\n );\n};\n\nexport const LoginManager = {\n // 自动根据已有的 User 信息进行登录鉴权,如果 User 为空则失败\n autoLogin: async () => {\n const user = await AV.User.currentAsync();\n if (user) {\n console.log('自动登录成功');\n CURRENT_USER = AVUserToLocalUser(user);\n onLoginFinish({ isAuto: true, user: CURRENT_USER });\n } else {\n onLoginFinish({ isAuto: true, error: 'User Not Login Yet' });\n }\n },\n\n // 如果 User 为空,则唤起苹果登录框;如果 User 不为空,直接鉴权\n login: async (\n type: LoginType,\n devAuthData: LoginAuthDataType | null = null,\n loadingCallback: Function\n ) => {\n // 如果之前已经鉴权过,则直接使用上次鉴权的 AuthData\n const cuurentUser = await AV.User.currentAsync();\n if (cuurentUser) {\n await LoginManager.autoLogin();\n return;\n }\n\n // 改为注入 delegate\n if (__DEV__) {\n if (devAuthData) {\n doLeanCloudLogin(devAuthData, undefined, ({ user, error }) => {\n onLoginFinish({ user, error });\n });\n return;\n }\n }\n\n if (type === LoginType.LoginTypeApple) {\n const { user, email, identityToken, error, code } =\n await AppleLoginUtil.requestAppleUserForLogin();\n if (!user || error) {\n onLoginFinish({ error, code });\n return;\n } else {\n let userData = {\n userId: user,\n email: email,\n authData: {\n openid: user,\n access_token: identityToken,\n expires_in: 99999999,\n loginType: 'apple',\n },\n };\n\n AppleLoginUtil.fetchAndUpdateCredentialState(\n userData.userId,\n ({ result, error: error2 }: { result: number; error: any }) => {\n if (error || result !== LoginState.AUTHORIZED) {\n onLoginFinish({ error: error2 });\n } else {\n loadingCallback && loadingCallback();\n doLeanCloudLogin(\n userData.authData,\n userData,\n ({ user: loginUser, error: error3 }) => {\n onLoginFinish({ user: loginUser, error: error3 });\n }\n );\n }\n }\n );\n }\n } else if (type === LoginType.LoginTypeWeChat) {\n WeChatLoginUtil.doLogin(\n ToolkitConfig.WeiXinId,\n ToolkitConfig.WeiXinSecret,\n ({\n nickname,\n headimgurl,\n openid,\n unionid,\n error,\n }: {\n nickname: string;\n headimgurl: string;\n openid: string;\n unionid: string;\n error: any;\n }) => {\n if (error) {\n onLoginFinish({ error });\n } else {\n let userData = {\n nickname: nickname,\n headimgurl: headimgurl,\n authData: {\n openid: openid,\n unionid: unionid,\n access_token: openid,\n expires_in: 99999999,\n loginType: 'wechat',\n },\n };\n loadingCallback && loadingCallback();\n doLeanCloudLogin(\n userData.authData,\n userData,\n ({ user, error: error2 }) => {\n onLoginFinish({ user, error: error2 });\n }\n );\n }\n }\n );\n } else if (type === LoginType.LoginTypeVisitor) {\n const uniqueId = getUniqueIdSync();\n console.log(uniqueId);\n let userData = {\n nickname: 'Visitor',\n authData: {\n openid: uniqueId,\n access_token: uniqueId,\n expires_in: 99999999,\n loginType: 'visitor',\n },\n };\n loadingCallback && loadingCallback();\n doLeanCloudLogin(userData.authData, userData, ({ user, error }) => {\n onLoginFinish({ user, error });\n });\n } else {\n onLoginFinish({ error: 'Unknown Login Type' });\n }\n },\n\n logOut: (callback?: Function) => {\n console.log('onLogout');\n AV.User.logOut();\n CURRENT_USER = null;\n callback && callback();\n Notification.postNotification('onLogout');\n },\n\n isLogin: () => {\n return LoginManager.currentUser() != null;\n },\n\n isVisitor: () => {\n return (\n LoginManager.isLogin() &&\n LoginManager.currentUser()?.type === LoginType.LoginTypeVisitor\n );\n },\n\n currentUser: () => {\n // console.log('current user is ', CURRENT_USER);\n return CURRENT_USER;\n },\n\n batchUpdateUser: async (\n keys: string[],\n values: any[],\n callback?: Function\n ) => {\n console.log('Batch Update User Begin: ' + keys + ' ' + values);\n const user = await AV.User.currentAsync();\n if (!user) {\n return;\n }\n const oldValues = [];\n for (let i = 0; i < keys.length; i++) {\n oldValues.push(user.get(keys[i]));\n user.set(keys[i], values[i]);\n }\n try {\n const newUser = await user.save();\n CURRENT_USER = AVUserToLocalUser(newUser);\n console.log('Batch Update User End', user);\n callback && callback();\n } catch (e) {\n console.error(e);\n for (let i = 0; i < keys.length; i++) {\n user.set(keys[i], oldValues[i]);\n }\n callback && callback(e);\n }\n },\n\n updateUser: (key: string, value: any, callback?: Function) => {\n LoginManager.batchUpdateUser([key], [value], callback);\n },\n\n deleteUser: async (callback: Function) => {\n try {\n if (!CURRENT_USER) {\n return;\n }\n if (CURRENT_USER.type === LoginType.LoginTypeApple) {\n await AppleLoginUtil.requestDeleteAccount();\n }\n const user = await AV.User.currentAsync();\n console.log('get user success');\n await user.destroy();\n console.log('delete user success');\n callback();\n } catch (error) {\n console.error(error);\n callback(error);\n }\n },\n\n lastLoginType: () => {\n return PrefData.getValue(BuildInPrefs.LastLoginType);\n },\n\n isRegisterInThisDevice: () => {\n return PrefData.getValue(BuildInPrefs.RegisterInThisDevice);\n },\n\n fetchWeChatAvatar: (callback: FetchImageFunctionType) => {\n WeChatLoginUtil.doLogin(\n ToolkitConfig.WeiXinId,\n ToolkitConfig.WeiXinSecret,\n ({ headimgurl }: { headimgurl: string }) => {\n callback({ headimgurl });\n }\n );\n },\n\n // 已注册天数\n getRegisterDays: () => {\n if (!LoginManager.isLogin()) {\n return 0;\n }\n const createTime = LoginManager.currentUser()?.AVUser.getCreatedAt();\n if (createTime) {\n const diff = new Date().getTime() - createTime.getTime();\n const diffDay = Math.max(Math.ceil(diff / (24 * 60 * 60 * 1000)), 0);\n return diffDay;\n }\n return 0;\n },\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_reactNativeDeviceInfo","_AppleLoginUtil","_Notification","_PrefData","_Tool","_WeChatLoginUtil","_constant","AV","CURRENT_USER","AVUserToLocalUser","user","nickname","get","email","headimgurl","type","AVUser","onLoginFinish","_ref","isAuto","error","code","data","PrefData","setValue","BuildInPrefs","LastLoginType","Notification","postNotification","doLeanCloudLogin","authData","userData","callback","console","log","loginType","loginTypeNum","LoginType","LoginTypeApple","LoginTypeWeChat","LoginTypeVisitor","User","loginWithAuthData","failOnNotExist","then","newUser","setEmail","set","Platform","OS","isNew","RegisterInThisDevice","error2","LoginManager","exports","autoLogin","currentAsync","login","devAuthData","arguments","length","undefined","loadingCallback","qrcodeCallback","cuurentUser","__DEV__","_ref2","identityToken","AppleLoginUtil","requestAppleUserForLogin","userId","openid","access_token","expires_in","fetchAndUpdateCredentialState","_ref3","result","LoginState","AUTHORIZED","_ref4","loginUser","error3","WeChatLoginUtil","doLogin","ToolkitConfig","WeiXinId","WeiXinSecret","_ref5","unionid","_ref6","LoginTypeWeChatScan","doLoginByScan","_ref7","_ref8","uniqueId","getUniqueIdSync","_ref9","logOut","isLogin","currentUser","isVisitor","_LoginManager$current","batchUpdateUser","keys","values","oldValues","i","push","save","e","updateUser","key","value","deleteUser","requestDeleteAccount","destroy","lastLoginType","getValue","isRegisterInThisDevice","fetchWeChatAvatar","_ref10","getRegisterDays","_LoginManager$current2","createTime","getCreatedAt","diff","Date","getTime","diffDay","Math","max","ceil"],"sources":["LoginManager.ts"],"sourcesContent":["import { User } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { getUniqueIdSync } from 'react-native-device-info';\nimport { AppleLoginUtil } from './AppleLoginUtil';\nimport { Notification } from './Notification';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { ToolkitConfig } from './Tool';\nimport { WeChatLoginUtil } from './WeChatLoginUtil';\nimport {\n LoginAuthDataType,\n LoginState,\n LoginType,\n LoginUserDataType,\n UserType,\n} from './constant';\n\ntype FetchImageFunctionType = ({ headimgurl }: { headimgurl: string }) => void;\nexport type LoginResultDataType = {\n isAuto?: boolean;\n user?: UserType;\n error?: string | object;\n code?: string;\n};\n\nconst AV = require('leancloud-storage');\n\nlet CURRENT_USER: UserType | null = null;\n\nconst AVUserToLocalUser = (user: User) => {\n return {\n nickname: user.get('nickname'),\n email: user.get('email'),\n headimgurl: user.get('headimgurl'),\n type: user.get('type'),\n AVUser: user,\n };\n};\n\nconst onLoginFinish = ({\n isAuto = false,\n user,\n error,\n code,\n}: LoginResultDataType) => {\n const data = { isAuto, user, error, code };\n if (user) {\n PrefData.setValue(BuildInPrefs.LastLoginType, user.type);\n }\n Notification.postNotification('onLogin', data);\n};\n\nconst doLeanCloudLogin = async (\n authData: LoginAuthDataType,\n userData: LoginUserDataType | undefined,\n callback: ({ user, error }: { user?: UserType; error?: any }) => void\n) => {\n console.log('Lean Cloud 开始登录', userData);\n // loginType 空说明是老用户\n const loginType = authData.loginType ? authData.loginType : 'apple';\n let loginTypeNum = LoginType.LoginTypeApple;\n if (loginType === 'wechat') {\n loginTypeNum = LoginType.LoginTypeWeChat;\n } else if (loginType === 'visitor') {\n loginTypeNum = LoginType.LoginTypeVisitor;\n }\n\n AV.User.loginWithAuthData(authData, loginType, { failOnNotExist: true }).then(\n (user: User) => {\n // 登录成功\n console.log('Lean Cloud 登录成功');\n // 每次重新鉴权都更新头像和昵称,避免微信头像过期\n // if (userData?.nickname) {\n // user.set('nickname', userData?.nickname);\n // }\n // if (userData?.headimgurl) {\n // user.set('headimgurl', userData?.headimgurl);\n // }\n // user.save();\n CURRENT_USER = AVUserToLocalUser(user);\n callback({ user: CURRENT_USER });\n },\n (error: any) => {\n if (error.code === 211) {\n // 创建用户,并补充资料\n console.log('创建用户,并补充资料');\n const newUser = new AV.User();\n const email = userData?.email;\n if (email) {\n newUser.setEmail(email);\n }\n newUser.set('nickname', userData?.nickname);\n newUser.set('headimgurl', userData?.headimgurl);\n newUser.set('type', loginTypeNum);\n if (Platform.OS === 'android') {\n newUser.set('source', 2);\n }\n newUser.loginWithAuthData(authData, loginType).then(\n (user: User) => {\n // 登录成功\n console.log('Lean Cloud 注册成功');\n CURRENT_USER = AVUserToLocalUser(user);\n CURRENT_USER.isNew = true;\n // 标记为当前用户是在本机注册的 TODO\n PrefData.setValue(BuildInPrefs.RegisterInThisDevice, true);\n callback({ user: CURRENT_USER });\n },\n (error2: any) => {\n // 登录失败\n console.log('Lean Cloud 登录失败', error2);\n callback({ error: error2 });\n }\n );\n } else {\n // 登录失败\n console.log('Lean Cloud 登录失败', error);\n callback({ error: error });\n }\n }\n );\n};\n\nexport const LoginManager = {\n // 自动根据已有的 User 信息进行登录鉴权,如果 User 为空则失败\n autoLogin: async () => {\n const user = await AV.User.currentAsync();\n if (user) {\n console.log('自动登录成功');\n CURRENT_USER = AVUserToLocalUser(user);\n onLoginFinish({ isAuto: true, user: CURRENT_USER });\n } else {\n onLoginFinish({ isAuto: true, error: 'User Not Login Yet' });\n }\n },\n\n // 如果 User 为空,则唤起苹果登录框;如果 User 不为空,直接鉴权\n login: async (\n type: LoginType,\n devAuthData: LoginAuthDataType | null = null,\n loadingCallback: Function,\n qrcodeCallback?: (qrcode: string) => void\n ) => {\n // 如果之前已经鉴权过,则直接使用上次鉴权的 AuthData\n const cuurentUser = await AV.User.currentAsync();\n if (cuurentUser) {\n await LoginManager.autoLogin();\n return;\n }\n\n // 改为注入 delegate\n if (__DEV__) {\n if (devAuthData) {\n doLeanCloudLogin(devAuthData, undefined, ({ user, error }) => {\n onLoginFinish({ user, error });\n });\n return;\n }\n }\n\n if (type === LoginType.LoginTypeApple) {\n const { user, email, identityToken, error, code } =\n await AppleLoginUtil.requestAppleUserForLogin();\n if (!user || error) {\n onLoginFinish({ error, code });\n return;\n } else {\n let userData = {\n userId: user,\n email: email,\n authData: {\n openid: user,\n access_token: identityToken,\n expires_in: 99999999,\n loginType: 'apple',\n },\n };\n\n AppleLoginUtil.fetchAndUpdateCredentialState(\n userData.userId,\n ({ result, error: error2 }: { result: number; error: any }) => {\n if (error || result !== LoginState.AUTHORIZED) {\n onLoginFinish({ error: error2 });\n } else {\n loadingCallback && loadingCallback();\n doLeanCloudLogin(\n userData.authData,\n userData,\n ({ user: loginUser, error: error3 }) => {\n onLoginFinish({ user: loginUser, error: error3 });\n }\n );\n }\n }\n );\n }\n } else if (type === LoginType.LoginTypeWeChat) {\n WeChatLoginUtil.doLogin(\n ToolkitConfig.WeiXinId,\n ToolkitConfig.WeiXinSecret,\n ({\n nickname,\n headimgurl,\n openid,\n unionid,\n error,\n }: {\n nickname: string;\n headimgurl: string;\n openid: string;\n unionid: string;\n error: any;\n }) => {\n if (error) {\n onLoginFinish({ error });\n } else {\n let userData = {\n nickname: nickname,\n headimgurl: headimgurl,\n authData: {\n openid: openid,\n unionid: unionid,\n access_token: openid,\n expires_in: 99999999,\n loginType: 'wechat',\n },\n };\n loadingCallback && loadingCallback();\n doLeanCloudLogin(\n userData.authData,\n userData,\n ({ user, error: error2 }) => {\n onLoginFinish({ user, error: error2 });\n }\n );\n }\n }\n );\n } else if (type === LoginType.LoginTypeWeChatScan) {\n WeChatLoginUtil.doLoginByScan(\n ToolkitConfig.WeiXinId,\n ToolkitConfig.WeiXinSecret,\n qrcodeCallback!,\n ({\n nickname,\n headimgurl,\n openid,\n unionid,\n error,\n }: {\n nickname: string;\n headimgurl: string;\n openid: string;\n unionid: string;\n error: any;\n }) => {\n if (error) {\n onLoginFinish({ error });\n } else {\n let userData = {\n nickname: nickname,\n headimgurl: headimgurl,\n authData: {\n openid: openid,\n unionid: unionid,\n access_token: openid,\n expires_in: 99999999,\n loginType: 'wechat',\n },\n };\n loadingCallback && loadingCallback();\n doLeanCloudLogin(\n userData.authData,\n userData,\n ({ user, error: error2 }) => {\n onLoginFinish({ user, error: error2 });\n }\n );\n }\n }\n );\n } else if (type === LoginType.LoginTypeVisitor) {\n const uniqueId = getUniqueIdSync();\n console.log(uniqueId);\n let userData = {\n nickname: 'Visitor',\n authData: {\n openid: uniqueId,\n access_token: uniqueId,\n expires_in: 99999999,\n loginType: 'visitor',\n },\n };\n loadingCallback && loadingCallback();\n doLeanCloudLogin(userData.authData, userData, ({ user, error }) => {\n onLoginFinish({ user, error });\n });\n } else {\n onLoginFinish({ error: 'Unknown Login Type' });\n }\n },\n\n logOut: (callback?: Function) => {\n console.log('onLogout');\n AV.User.logOut();\n CURRENT_USER = null;\n callback && callback();\n Notification.postNotification('onLogout');\n },\n\n isLogin: () => {\n return LoginManager.currentUser() != null;\n },\n\n isVisitor: () => {\n return (\n LoginManager.isLogin() &&\n LoginManager.currentUser()?.type === LoginType.LoginTypeVisitor\n );\n },\n\n currentUser: () => {\n // console.log('current user is ', CURRENT_USER);\n return CURRENT_USER;\n },\n\n batchUpdateUser: async (\n keys: string[],\n values: any[],\n callback?: Function\n ) => {\n console.log('Batch Update User Begin: ' + keys + ' ' + values);\n const user = await AV.User.currentAsync();\n if (!user) {\n return;\n }\n const oldValues = [];\n for (let i = 0; i < keys.length; i++) {\n oldValues.push(user.get(keys[i]));\n user.set(keys[i], values[i]);\n }\n try {\n const newUser = await user.save();\n CURRENT_USER = AVUserToLocalUser(newUser);\n console.log('Batch Update User End', user);\n callback && callback();\n } catch (e) {\n console.error(e);\n for (let i = 0; i < keys.length; i++) {\n user.set(keys[i], oldValues[i]);\n }\n callback && callback(e);\n }\n },\n\n updateUser: (key: string, value: any, callback?: Function) => {\n LoginManager.batchUpdateUser([key], [value], callback);\n },\n\n deleteUser: async (callback: Function) => {\n try {\n if (!CURRENT_USER) {\n return;\n }\n if (CURRENT_USER.type === LoginType.LoginTypeApple) {\n await AppleLoginUtil.requestDeleteAccount();\n }\n const user = await AV.User.currentAsync();\n console.log('get user success');\n await user.destroy();\n console.log('delete user success');\n callback();\n } catch (error) {\n console.error(error);\n callback(error);\n }\n },\n\n lastLoginType: () => {\n return PrefData.getValue(BuildInPrefs.LastLoginType);\n },\n\n isRegisterInThisDevice: () => {\n return PrefData.getValue(BuildInPrefs.RegisterInThisDevice);\n },\n\n fetchWeChatAvatar: (callback: FetchImageFunctionType) => {\n WeChatLoginUtil.doLogin(\n ToolkitConfig.WeiXinId,\n ToolkitConfig.WeiXinSecret,\n ({ headimgurl }: { headimgurl: string }) => {\n callback({ headimgurl });\n }\n );\n },\n\n // 已注册天数\n getRegisterDays: () => {\n if (!LoginManager.isLogin()) {\n return 0;\n }\n const createTime = LoginManager.currentUser()?.AVUser.getCreatedAt();\n if (createTime) {\n const diff = new Date().getTime() - createTime.getTime();\n const diffDay = Math.max(Math.ceil(diff / (24 * 60 * 60 * 1000)), 0);\n return diffDay;\n }\n return 0;\n },\n};\n"],"mappings":"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"}
|
|
@@ -83,10 +83,11 @@ const WeChatLoginUtil = exports.WeChatLoginUtil = {
|
|
|
83
83
|
const nonceStr = _Tool.Tool.generateObjectId();
|
|
84
84
|
const timestamp = String(Math.round(Date.now() / 1000));
|
|
85
85
|
const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
|
|
86
|
+
const qrcodeEmitter = new _reactNative.NativeEventEmitter(_reactNative.NativeModules.WeChat);
|
|
87
|
+
const subscription = qrcodeEmitter.addListener('onAuthGotQrcode', res => onQRGet(res.qrcode));
|
|
86
88
|
_reactNative.NativeModules.WeChat.authByScan(WeiXinId, nonceStr, timestamp, 'snsapi_userinfo', signature, '', ret => {
|
|
87
|
-
onQRGet(ret === null || ret === void 0 ? void 0 : ret.qrcode);
|
|
88
|
-
}, ret => {
|
|
89
89
|
console.log('scan result', ret);
|
|
90
|
+
subscription.remove();
|
|
90
91
|
if (!(ret !== null && ret !== void 0 && ret.authCode)) {
|
|
91
92
|
callback({
|
|
92
93
|
error: 'Auth code 获取失败'
|
|
@@ -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","origin","ret","sha1","console","log","getUserInfo","code","callback","accessTokenUrl","then","userInfoUrl","openid","res2","nickname","headimgurl","unionid","catch","e","warn","error","WeChatLoginUtil","exports","doLogin","sendAuthRequest","doLoginByScan","onQRGet","Tool","generateObjectId","String","Math","round","Date","now","signature","NativeModules","
|
|
1
|
+
{"version":3,"names":["_jsSha","require","_reactNative","WeChat","_interopRequireWildcard","_Tool","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","getAccessToken","WeiXinId","WeiXinSecret","url","response","fetch","res","json","access_token","getSDKTicket","accessToken","ticket","createSignature","nonceStr","sdkTicket","timestamp","origin","ret","sha1","console","log","getUserInfo","code","callback","accessTokenUrl","then","userInfoUrl","openid","res2","nickname","headimgurl","unionid","catch","e","warn","error","WeChatLoginUtil","exports","doLogin","sendAuthRequest","doLoginByScan","onQRGet","Tool","generateObjectId","String","Math","round","Date","now","signature","qrcodeEmitter","NativeEventEmitter","NativeModules","subscription","addListener","qrcode","authByScan","remove","authCode"],"sources":["WeChatLoginUtil.ts"],"sourcesContent":["import { sha1 } from 'js-sha1';\nimport { NativeEventEmitter, NativeModules } from 'react-native';\nimport * as WeChat from 'react-native-wechat-lib';\nimport { Tool } from './Tool';\n\n// https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html\nconst getAccessToken = async (WeiXinId: string, WeiXinSecret: string) => {\n let url =\n 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' +\n WeiXinId +\n '&secret=' +\n WeiXinSecret;\n const response = await fetch(url);\n const res = await response.json();\n return res.access_token;\n};\n\nconst getSDKTicket = async (accessToken: string) => {\n let url =\n 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=2&access_token=' +\n accessToken;\n const response = await fetch(url);\n const res = await response.json();\n return res.ticket;\n};\n\nconst createSignature = (\n WeiXinId: string,\n nonceStr: string,\n sdkTicket: string,\n timestamp: string\n) => {\n const origin =\n 'appid=' +\n WeiXinId +\n '&noncestr=' +\n nonceStr +\n '&sdk_ticket=' +\n sdkTicket +\n '×tamp=' +\n timestamp;\n const ret = sha1(origin);\n console.log('wx scan signature', origin, ret);\n return ret;\n};\n\nconst getUserInfo = (\n WeiXinId: string,\n WeiXinSecret: string,\n code: string,\n callback: Function\n) => {\n let accessTokenUrl =\n 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' +\n WeiXinId +\n '&secret=' +\n WeiXinSecret +\n '&code=' +\n code +\n '&grant_type=authorization_code';\n fetch(accessTokenUrl)\n .then((res) => {\n return res.json();\n })\n .then((res) => {\n console.log('wechat get access code success: ', res.access_token);\n let userInfoUrl =\n 'https://api.weixin.qq.com/sns/userinfo?access_token=' +\n res.access_token +\n '&openid=' +\n res.openid;\n fetch(userInfoUrl)\n .then((res2) => {\n return res2.json();\n })\n .then((json) => {\n console.log('wechat get user info success: ', json);\n callback({\n nickname: json.nickname,\n headimgurl: json.headimgurl,\n openid: json.openid,\n unionid: json.unionid,\n });\n })\n .catch((e) => {\n console.warn('wechat get user info fail ', e);\n callback({ error: e });\n });\n })\n .catch((e) => {\n console.warn('wechat get access code fail ', e);\n callback({ error: e });\n });\n};\n\nexport const WeChatLoginUtil = {\n doLogin: (WeiXinId: string, WeiXinSecret: string, callback: Function) => {\n WeChat.sendAuthRequest('snsapi_userinfo')\n .then((ret) => {\n console.log('wechat auth success ', ret);\n if (!ret?.code) {\n callback({ error: 'Auth code 获取失败' });\n return;\n }\n getUserInfo(WeiXinId, WeiXinSecret, ret?.code, callback);\n })\n .catch((e: any) => {\n console.warn('wechat auth fail ', e);\n callback({ error: e });\n });\n },\n\n doLoginByScan: async (\n WeiXinId: string,\n WeiXinSecret: string,\n onQRGet: (qrcode: string) => void,\n callback: Function\n ) => {\n const accessToken = await getAccessToken(WeiXinId, WeiXinSecret);\n const ticket = await getSDKTicket(accessToken);\n const nonceStr = Tool.generateObjectId();\n const timestamp = String(Math.round(Date.now() / 1000));\n const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);\n\n const qrcodeEmitter = new NativeEventEmitter(NativeModules.WeChat);\n\n const subscription = qrcodeEmitter.addListener('onAuthGotQrcode', (res) =>\n onQRGet(res.qrcode)\n );\n\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 subscription.remove();\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/lib/commonjs/constant.js
CHANGED
|
@@ -13,6 +13,7 @@ let LoginType = exports.LoginType = /*#__PURE__*/function (LoginType) {
|
|
|
13
13
|
LoginType[LoginType["LoginTypeApple"] = 0] = "LoginTypeApple";
|
|
14
14
|
LoginType[LoginType["LoginTypeWeChat"] = 1] = "LoginTypeWeChat";
|
|
15
15
|
LoginType[LoginType["LoginTypeVisitor"] = 2] = "LoginTypeVisitor";
|
|
16
|
+
LoginType[LoginType["LoginTypeWeChatScan"] = 3] = "LoginTypeWeChatScan";
|
|
16
17
|
return LoginType;
|
|
17
18
|
}({});
|
|
18
19
|
//# sourceMappingURL=constant.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["LoginState","exports","LoginType"],"sources":["constant.ts"],"sourcesContent":["import { User } from 'leancloud-storage';\n\nexport interface UserType {\n nickname: string;\n email: string;\n headimgurl: string;\n type: number;\n isNew?: boolean;\n AVUser: User;\n}\n\nexport interface LoginAuthDataType {\n openid: string;\n unionid?: string;\n access_token: string | null;\n expires_in: number;\n loginType: string;\n}\n\nexport interface LoginUserDataType {\n userId?: string;\n nickname?: string;\n headimgurl?: string;\n email?: string | null;\n authData: LoginAuthDataType;\n}\n\nexport enum LoginState {\n NOTLOGIN,\n AUTHORIZED,\n}\n\nexport enum LoginType {\n LoginTypeApple,\n LoginTypeWeChat,\n LoginTypeVisitor,\n}\n"],"mappings":";;;;;;IA2BYA,UAAU,GAAAC,OAAA,CAAAD,UAAA,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAAA,IAKVE,SAAS,GAAAD,OAAA,CAAAC,SAAA,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA"}
|
|
1
|
+
{"version":3,"names":["LoginState","exports","LoginType"],"sources":["constant.ts"],"sourcesContent":["import { User } from 'leancloud-storage';\n\nexport interface UserType {\n nickname: string;\n email: string;\n headimgurl: string;\n type: number;\n isNew?: boolean;\n AVUser: User;\n}\n\nexport interface LoginAuthDataType {\n openid: string;\n unionid?: string;\n access_token: string | null;\n expires_in: number;\n loginType: string;\n}\n\nexport interface LoginUserDataType {\n userId?: string;\n nickname?: string;\n headimgurl?: string;\n email?: string | null;\n authData: LoginAuthDataType;\n}\n\nexport enum LoginState {\n NOTLOGIN,\n AUTHORIZED,\n}\n\nexport enum LoginType {\n LoginTypeApple,\n LoginTypeWeChat,\n LoginTypeVisitor,\n LoginTypeWeChatScan,\n}\n"],"mappings":";;;;;;IA2BYA,UAAU,GAAAC,OAAA,CAAAD,UAAA,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAAA,IAKVE,SAAS,GAAAD,OAAA,CAAAC,SAAA,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA"}
|
|
@@ -125,6 +125,7 @@ export const LoginManager = {
|
|
|
125
125
|
login: async function (type) {
|
|
126
126
|
let devAuthData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
127
127
|
let loadingCallback = arguments.length > 2 ? arguments[2] : undefined;
|
|
128
|
+
let qrcodeCallback = arguments.length > 3 ? arguments[3] : undefined;
|
|
128
129
|
// 如果之前已经鉴权过,则直接使用上次鉴权的 AuthData
|
|
129
130
|
const cuurentUser = await AV.User.currentAsync();
|
|
130
131
|
if (cuurentUser) {
|
|
@@ -235,6 +236,44 @@ export const LoginManager = {
|
|
|
235
236
|
});
|
|
236
237
|
}
|
|
237
238
|
});
|
|
239
|
+
} else if (type === LoginType.LoginTypeWeChatScan) {
|
|
240
|
+
WeChatLoginUtil.doLoginByScan(ToolkitConfig.WeiXinId, ToolkitConfig.WeiXinSecret, qrcodeCallback, _ref7 => {
|
|
241
|
+
let {
|
|
242
|
+
nickname,
|
|
243
|
+
headimgurl,
|
|
244
|
+
openid,
|
|
245
|
+
unionid,
|
|
246
|
+
error
|
|
247
|
+
} = _ref7;
|
|
248
|
+
if (error) {
|
|
249
|
+
onLoginFinish({
|
|
250
|
+
error
|
|
251
|
+
});
|
|
252
|
+
} else {
|
|
253
|
+
let userData = {
|
|
254
|
+
nickname: nickname,
|
|
255
|
+
headimgurl: headimgurl,
|
|
256
|
+
authData: {
|
|
257
|
+
openid: openid,
|
|
258
|
+
unionid: unionid,
|
|
259
|
+
access_token: openid,
|
|
260
|
+
expires_in: 99999999,
|
|
261
|
+
loginType: 'wechat'
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
loadingCallback && loadingCallback();
|
|
265
|
+
doLeanCloudLogin(userData.authData, userData, _ref8 => {
|
|
266
|
+
let {
|
|
267
|
+
user,
|
|
268
|
+
error: error2
|
|
269
|
+
} = _ref8;
|
|
270
|
+
onLoginFinish({
|
|
271
|
+
user,
|
|
272
|
+
error: error2
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
});
|
|
238
277
|
} else if (type === LoginType.LoginTypeVisitor) {
|
|
239
278
|
const uniqueId = getUniqueIdSync();
|
|
240
279
|
console.log(uniqueId);
|
|
@@ -248,11 +287,11 @@ export const LoginManager = {
|
|
|
248
287
|
}
|
|
249
288
|
};
|
|
250
289
|
loadingCallback && loadingCallback();
|
|
251
|
-
doLeanCloudLogin(userData.authData, userData,
|
|
290
|
+
doLeanCloudLogin(userData.authData, userData, _ref9 => {
|
|
252
291
|
let {
|
|
253
292
|
user,
|
|
254
293
|
error
|
|
255
|
-
} =
|
|
294
|
+
} = _ref9;
|
|
256
295
|
onLoginFinish({
|
|
257
296
|
user,
|
|
258
297
|
error
|
|
@@ -334,10 +373,10 @@ export const LoginManager = {
|
|
|
334
373
|
return PrefData.getValue(BuildInPrefs.RegisterInThisDevice);
|
|
335
374
|
},
|
|
336
375
|
fetchWeChatAvatar: callback => {
|
|
337
|
-
WeChatLoginUtil.doLogin(ToolkitConfig.WeiXinId, ToolkitConfig.WeiXinSecret,
|
|
376
|
+
WeChatLoginUtil.doLogin(ToolkitConfig.WeiXinId, ToolkitConfig.WeiXinSecret, _ref10 => {
|
|
338
377
|
let {
|
|
339
378
|
headimgurl
|
|
340
|
-
} =
|
|
379
|
+
} = _ref10;
|
|
341
380
|
callback({
|
|
342
381
|
headimgurl
|
|
343
382
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","getUniqueIdSync","AppleLoginUtil","Notification","BuildInPrefs","PrefData","ToolkitConfig","WeChatLoginUtil","LoginState","LoginType","AV","require","CURRENT_USER","AVUserToLocalUser","user","nickname","get","email","headimgurl","type","AVUser","onLoginFinish","_ref","isAuto","error","code","data","setValue","LastLoginType","postNotification","doLeanCloudLogin","authData","userData","callback","console","log","loginType","loginTypeNum","LoginTypeApple","LoginTypeWeChat","LoginTypeVisitor","User","loginWithAuthData","failOnNotExist","then","newUser","setEmail","set","OS","isNew","RegisterInThisDevice","error2","LoginManager","autoLogin","currentAsync","login","devAuthData","arguments","length","undefined","loadingCallback","cuurentUser","__DEV__","_ref2","identityToken","requestAppleUserForLogin","userId","openid","access_token","expires_in","fetchAndUpdateCredentialState","_ref3","result","AUTHORIZED","_ref4","loginUser","error3","doLogin","WeiXinId","WeiXinSecret","_ref5","unionid","_ref6","uniqueId","_ref7","logOut","isLogin","currentUser","isVisitor","_LoginManager$current","batchUpdateUser","keys","values","oldValues","i","push","save","e","updateUser","key","value","deleteUser","requestDeleteAccount","destroy","lastLoginType","getValue","isRegisterInThisDevice","fetchWeChatAvatar","_ref8","getRegisterDays","_LoginManager$current2","createTime","getCreatedAt","diff","Date","getTime","diffDay","Math","max","ceil"],"sources":["LoginManager.ts"],"sourcesContent":["import { User } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { getUniqueIdSync } from 'react-native-device-info';\nimport { AppleLoginUtil } from './AppleLoginUtil';\nimport { Notification } from './Notification';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { ToolkitConfig } from './Tool';\nimport { WeChatLoginUtil } from './WeChatLoginUtil';\nimport {\n LoginAuthDataType,\n LoginState,\n LoginType,\n LoginUserDataType,\n UserType,\n} from './constant';\n\ntype FetchImageFunctionType = ({ headimgurl }: { headimgurl: string }) => void;\nexport type LoginResultDataType = {\n isAuto?: boolean;\n user?: UserType;\n error?: string | object;\n code?: string;\n};\n\nconst AV = require('leancloud-storage');\n\nlet CURRENT_USER: UserType | null = null;\n\nconst AVUserToLocalUser = (user: User) => {\n return {\n nickname: user.get('nickname'),\n email: user.get('email'),\n headimgurl: user.get('headimgurl'),\n type: user.get('type'),\n AVUser: user,\n };\n};\n\nconst onLoginFinish = ({\n isAuto = false,\n user,\n error,\n code,\n}: LoginResultDataType) => {\n const data = { isAuto, user, error, code };\n if (user) {\n PrefData.setValue(BuildInPrefs.LastLoginType, user.type);\n }\n Notification.postNotification('onLogin', data);\n};\n\nconst doLeanCloudLogin = async (\n authData: LoginAuthDataType,\n userData: LoginUserDataType | undefined,\n callback: ({ user, error }: { user?: UserType; error?: any }) => void\n) => {\n console.log('Lean Cloud 开始登录', userData);\n // loginType 空说明是老用户\n const loginType = authData.loginType ? authData.loginType : 'apple';\n let loginTypeNum = LoginType.LoginTypeApple;\n if (loginType === 'wechat') {\n loginTypeNum = LoginType.LoginTypeWeChat;\n } else if (loginType === 'visitor') {\n loginTypeNum = LoginType.LoginTypeVisitor;\n }\n\n AV.User.loginWithAuthData(authData, loginType, { failOnNotExist: true }).then(\n (user: User) => {\n // 登录成功\n console.log('Lean Cloud 登录成功');\n // 每次重新鉴权都更新头像和昵称,避免微信头像过期\n // if (userData?.nickname) {\n // user.set('nickname', userData?.nickname);\n // }\n // if (userData?.headimgurl) {\n // user.set('headimgurl', userData?.headimgurl);\n // }\n // user.save();\n CURRENT_USER = AVUserToLocalUser(user);\n callback({ user: CURRENT_USER });\n },\n (error: any) => {\n if (error.code === 211) {\n // 创建用户,并补充资料\n console.log('创建用户,并补充资料');\n const newUser = new AV.User();\n const email = userData?.email;\n if (email) {\n newUser.setEmail(email);\n }\n newUser.set('nickname', userData?.nickname);\n newUser.set('headimgurl', userData?.headimgurl);\n newUser.set('type', loginTypeNum);\n if (Platform.OS === 'android') {\n newUser.set('source', 2);\n }\n newUser.loginWithAuthData(authData, loginType).then(\n (user: User) => {\n // 登录成功\n console.log('Lean Cloud 注册成功');\n CURRENT_USER = AVUserToLocalUser(user);\n CURRENT_USER.isNew = true;\n // 标记为当前用户是在本机注册的 TODO\n PrefData.setValue(BuildInPrefs.RegisterInThisDevice, true);\n callback({ user: CURRENT_USER });\n },\n (error2: any) => {\n // 登录失败\n console.log('Lean Cloud 登录失败', error2);\n callback({ error: error2 });\n }\n );\n } else {\n // 登录失败\n console.log('Lean Cloud 登录失败', error);\n callback({ error: error });\n }\n }\n );\n};\n\nexport const LoginManager = {\n // 自动根据已有的 User 信息进行登录鉴权,如果 User 为空则失败\n autoLogin: async () => {\n const user = await AV.User.currentAsync();\n if (user) {\n console.log('自动登录成功');\n CURRENT_USER = AVUserToLocalUser(user);\n onLoginFinish({ isAuto: true, user: CURRENT_USER });\n } else {\n onLoginFinish({ isAuto: true, error: 'User Not Login Yet' });\n }\n },\n\n // 如果 User 为空,则唤起苹果登录框;如果 User 不为空,直接鉴权\n login: async (\n type: LoginType,\n devAuthData: LoginAuthDataType | null = null,\n loadingCallback: Function\n ) => {\n // 如果之前已经鉴权过,则直接使用上次鉴权的 AuthData\n const cuurentUser = await AV.User.currentAsync();\n if (cuurentUser) {\n await LoginManager.autoLogin();\n return;\n }\n\n // 改为注入 delegate\n if (__DEV__) {\n if (devAuthData) {\n doLeanCloudLogin(devAuthData, undefined, ({ user, error }) => {\n onLoginFinish({ user, error });\n });\n return;\n }\n }\n\n if (type === LoginType.LoginTypeApple) {\n const { user, email, identityToken, error, code } =\n await AppleLoginUtil.requestAppleUserForLogin();\n if (!user || error) {\n onLoginFinish({ error, code });\n return;\n } else {\n let userData = {\n userId: user,\n email: email,\n authData: {\n openid: user,\n access_token: identityToken,\n expires_in: 99999999,\n loginType: 'apple',\n },\n };\n\n AppleLoginUtil.fetchAndUpdateCredentialState(\n userData.userId,\n ({ result, error: error2 }: { result: number; error: any }) => {\n if (error || result !== LoginState.AUTHORIZED) {\n onLoginFinish({ error: error2 });\n } else {\n loadingCallback && loadingCallback();\n doLeanCloudLogin(\n userData.authData,\n userData,\n ({ user: loginUser, error: error3 }) => {\n onLoginFinish({ user: loginUser, error: error3 });\n }\n );\n }\n }\n );\n }\n } else if (type === LoginType.LoginTypeWeChat) {\n WeChatLoginUtil.doLogin(\n ToolkitConfig.WeiXinId,\n ToolkitConfig.WeiXinSecret,\n ({\n nickname,\n headimgurl,\n openid,\n unionid,\n error,\n }: {\n nickname: string;\n headimgurl: string;\n openid: string;\n unionid: string;\n error: any;\n }) => {\n if (error) {\n onLoginFinish({ error });\n } else {\n let userData = {\n nickname: nickname,\n headimgurl: headimgurl,\n authData: {\n openid: openid,\n unionid: unionid,\n access_token: openid,\n expires_in: 99999999,\n loginType: 'wechat',\n },\n };\n loadingCallback && loadingCallback();\n doLeanCloudLogin(\n userData.authData,\n userData,\n ({ user, error: error2 }) => {\n onLoginFinish({ user, error: error2 });\n }\n );\n }\n }\n );\n } else if (type === LoginType.LoginTypeVisitor) {\n const uniqueId = getUniqueIdSync();\n console.log(uniqueId);\n let userData = {\n nickname: 'Visitor',\n authData: {\n openid: uniqueId,\n access_token: uniqueId,\n expires_in: 99999999,\n loginType: 'visitor',\n },\n };\n loadingCallback && loadingCallback();\n doLeanCloudLogin(userData.authData, userData, ({ user, error }) => {\n onLoginFinish({ user, error });\n });\n } else {\n onLoginFinish({ error: 'Unknown Login Type' });\n }\n },\n\n logOut: (callback?: Function) => {\n console.log('onLogout');\n AV.User.logOut();\n CURRENT_USER = null;\n callback && callback();\n Notification.postNotification('onLogout');\n },\n\n isLogin: () => {\n return LoginManager.currentUser() != null;\n },\n\n isVisitor: () => {\n return (\n LoginManager.isLogin() &&\n LoginManager.currentUser()?.type === LoginType.LoginTypeVisitor\n );\n },\n\n currentUser: () => {\n // console.log('current user is ', CURRENT_USER);\n return CURRENT_USER;\n },\n\n batchUpdateUser: async (\n keys: string[],\n values: any[],\n callback?: Function\n ) => {\n console.log('Batch Update User Begin: ' + keys + ' ' + values);\n const user = await AV.User.currentAsync();\n if (!user) {\n return;\n }\n const oldValues = [];\n for (let i = 0; i < keys.length; i++) {\n oldValues.push(user.get(keys[i]));\n user.set(keys[i], values[i]);\n }\n try {\n const newUser = await user.save();\n CURRENT_USER = AVUserToLocalUser(newUser);\n console.log('Batch Update User End', user);\n callback && callback();\n } catch (e) {\n console.error(e);\n for (let i = 0; i < keys.length; i++) {\n user.set(keys[i], oldValues[i]);\n }\n callback && callback(e);\n }\n },\n\n updateUser: (key: string, value: any, callback?: Function) => {\n LoginManager.batchUpdateUser([key], [value], callback);\n },\n\n deleteUser: async (callback: Function) => {\n try {\n if (!CURRENT_USER) {\n return;\n }\n if (CURRENT_USER.type === LoginType.LoginTypeApple) {\n await AppleLoginUtil.requestDeleteAccount();\n }\n const user = await AV.User.currentAsync();\n console.log('get user success');\n await user.destroy();\n console.log('delete user success');\n callback();\n } catch (error) {\n console.error(error);\n callback(error);\n }\n },\n\n lastLoginType: () => {\n return PrefData.getValue(BuildInPrefs.LastLoginType);\n },\n\n isRegisterInThisDevice: () => {\n return PrefData.getValue(BuildInPrefs.RegisterInThisDevice);\n },\n\n fetchWeChatAvatar: (callback: FetchImageFunctionType) => {\n WeChatLoginUtil.doLogin(\n ToolkitConfig.WeiXinId,\n ToolkitConfig.WeiXinSecret,\n ({ headimgurl }: { headimgurl: string }) => {\n callback({ headimgurl });\n }\n );\n },\n\n // 已注册天数\n getRegisterDays: () => {\n if (!LoginManager.isLogin()) {\n return 0;\n }\n const createTime = LoginManager.currentUser()?.AVUser.getCreatedAt();\n if (createTime) {\n const diff = new Date().getTime() - createTime.getTime();\n const diffDay = Math.max(Math.ceil(diff / (24 * 60 * 60 * 1000)), 0);\n return diffDay;\n }\n return 0;\n },\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Platform","getUniqueIdSync","AppleLoginUtil","Notification","BuildInPrefs","PrefData","ToolkitConfig","WeChatLoginUtil","LoginState","LoginType","AV","require","CURRENT_USER","AVUserToLocalUser","user","nickname","get","email","headimgurl","type","AVUser","onLoginFinish","_ref","isAuto","error","code","data","setValue","LastLoginType","postNotification","doLeanCloudLogin","authData","userData","callback","console","log","loginType","loginTypeNum","LoginTypeApple","LoginTypeWeChat","LoginTypeVisitor","User","loginWithAuthData","failOnNotExist","then","newUser","setEmail","set","OS","isNew","RegisterInThisDevice","error2","LoginManager","autoLogin","currentAsync","login","devAuthData","arguments","length","undefined","loadingCallback","qrcodeCallback","cuurentUser","__DEV__","_ref2","identityToken","requestAppleUserForLogin","userId","openid","access_token","expires_in","fetchAndUpdateCredentialState","_ref3","result","AUTHORIZED","_ref4","loginUser","error3","doLogin","WeiXinId","WeiXinSecret","_ref5","unionid","_ref6","LoginTypeWeChatScan","doLoginByScan","_ref7","_ref8","uniqueId","_ref9","logOut","isLogin","currentUser","isVisitor","_LoginManager$current","batchUpdateUser","keys","values","oldValues","i","push","save","e","updateUser","key","value","deleteUser","requestDeleteAccount","destroy","lastLoginType","getValue","isRegisterInThisDevice","fetchWeChatAvatar","_ref10","getRegisterDays","_LoginManager$current2","createTime","getCreatedAt","diff","Date","getTime","diffDay","Math","max","ceil"],"sources":["LoginManager.ts"],"sourcesContent":["import { User } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { getUniqueIdSync } from 'react-native-device-info';\nimport { AppleLoginUtil } from './AppleLoginUtil';\nimport { Notification } from './Notification';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { ToolkitConfig } from './Tool';\nimport { WeChatLoginUtil } from './WeChatLoginUtil';\nimport {\n LoginAuthDataType,\n LoginState,\n LoginType,\n LoginUserDataType,\n UserType,\n} from './constant';\n\ntype FetchImageFunctionType = ({ headimgurl }: { headimgurl: string }) => void;\nexport type LoginResultDataType = {\n isAuto?: boolean;\n user?: UserType;\n error?: string | object;\n code?: string;\n};\n\nconst AV = require('leancloud-storage');\n\nlet CURRENT_USER: UserType | null = null;\n\nconst AVUserToLocalUser = (user: User) => {\n return {\n nickname: user.get('nickname'),\n email: user.get('email'),\n headimgurl: user.get('headimgurl'),\n type: user.get('type'),\n AVUser: user,\n };\n};\n\nconst onLoginFinish = ({\n isAuto = false,\n user,\n error,\n code,\n}: LoginResultDataType) => {\n const data = { isAuto, user, error, code };\n if (user) {\n PrefData.setValue(BuildInPrefs.LastLoginType, user.type);\n }\n Notification.postNotification('onLogin', data);\n};\n\nconst doLeanCloudLogin = async (\n authData: LoginAuthDataType,\n userData: LoginUserDataType | undefined,\n callback: ({ user, error }: { user?: UserType; error?: any }) => void\n) => {\n console.log('Lean Cloud 开始登录', userData);\n // loginType 空说明是老用户\n const loginType = authData.loginType ? authData.loginType : 'apple';\n let loginTypeNum = LoginType.LoginTypeApple;\n if (loginType === 'wechat') {\n loginTypeNum = LoginType.LoginTypeWeChat;\n } else if (loginType === 'visitor') {\n loginTypeNum = LoginType.LoginTypeVisitor;\n }\n\n AV.User.loginWithAuthData(authData, loginType, { failOnNotExist: true }).then(\n (user: User) => {\n // 登录成功\n console.log('Lean Cloud 登录成功');\n // 每次重新鉴权都更新头像和昵称,避免微信头像过期\n // if (userData?.nickname) {\n // user.set('nickname', userData?.nickname);\n // }\n // if (userData?.headimgurl) {\n // user.set('headimgurl', userData?.headimgurl);\n // }\n // user.save();\n CURRENT_USER = AVUserToLocalUser(user);\n callback({ user: CURRENT_USER });\n },\n (error: any) => {\n if (error.code === 211) {\n // 创建用户,并补充资料\n console.log('创建用户,并补充资料');\n const newUser = new AV.User();\n const email = userData?.email;\n if (email) {\n newUser.setEmail(email);\n }\n newUser.set('nickname', userData?.nickname);\n newUser.set('headimgurl', userData?.headimgurl);\n newUser.set('type', loginTypeNum);\n if (Platform.OS === 'android') {\n newUser.set('source', 2);\n }\n newUser.loginWithAuthData(authData, loginType).then(\n (user: User) => {\n // 登录成功\n console.log('Lean Cloud 注册成功');\n CURRENT_USER = AVUserToLocalUser(user);\n CURRENT_USER.isNew = true;\n // 标记为当前用户是在本机注册的 TODO\n PrefData.setValue(BuildInPrefs.RegisterInThisDevice, true);\n callback({ user: CURRENT_USER });\n },\n (error2: any) => {\n // 登录失败\n console.log('Lean Cloud 登录失败', error2);\n callback({ error: error2 });\n }\n );\n } else {\n // 登录失败\n console.log('Lean Cloud 登录失败', error);\n callback({ error: error });\n }\n }\n );\n};\n\nexport const LoginManager = {\n // 自动根据已有的 User 信息进行登录鉴权,如果 User 为空则失败\n autoLogin: async () => {\n const user = await AV.User.currentAsync();\n if (user) {\n console.log('自动登录成功');\n CURRENT_USER = AVUserToLocalUser(user);\n onLoginFinish({ isAuto: true, user: CURRENT_USER });\n } else {\n onLoginFinish({ isAuto: true, error: 'User Not Login Yet' });\n }\n },\n\n // 如果 User 为空,则唤起苹果登录框;如果 User 不为空,直接鉴权\n login: async (\n type: LoginType,\n devAuthData: LoginAuthDataType | null = null,\n loadingCallback: Function,\n qrcodeCallback?: (qrcode: string) => void\n ) => {\n // 如果之前已经鉴权过,则直接使用上次鉴权的 AuthData\n const cuurentUser = await AV.User.currentAsync();\n if (cuurentUser) {\n await LoginManager.autoLogin();\n return;\n }\n\n // 改为注入 delegate\n if (__DEV__) {\n if (devAuthData) {\n doLeanCloudLogin(devAuthData, undefined, ({ user, error }) => {\n onLoginFinish({ user, error });\n });\n return;\n }\n }\n\n if (type === LoginType.LoginTypeApple) {\n const { user, email, identityToken, error, code } =\n await AppleLoginUtil.requestAppleUserForLogin();\n if (!user || error) {\n onLoginFinish({ error, code });\n return;\n } else {\n let userData = {\n userId: user,\n email: email,\n authData: {\n openid: user,\n access_token: identityToken,\n expires_in: 99999999,\n loginType: 'apple',\n },\n };\n\n AppleLoginUtil.fetchAndUpdateCredentialState(\n userData.userId,\n ({ result, error: error2 }: { result: number; error: any }) => {\n if (error || result !== LoginState.AUTHORIZED) {\n onLoginFinish({ error: error2 });\n } else {\n loadingCallback && loadingCallback();\n doLeanCloudLogin(\n userData.authData,\n userData,\n ({ user: loginUser, error: error3 }) => {\n onLoginFinish({ user: loginUser, error: error3 });\n }\n );\n }\n }\n );\n }\n } else if (type === LoginType.LoginTypeWeChat) {\n WeChatLoginUtil.doLogin(\n ToolkitConfig.WeiXinId,\n ToolkitConfig.WeiXinSecret,\n ({\n nickname,\n headimgurl,\n openid,\n unionid,\n error,\n }: {\n nickname: string;\n headimgurl: string;\n openid: string;\n unionid: string;\n error: any;\n }) => {\n if (error) {\n onLoginFinish({ error });\n } else {\n let userData = {\n nickname: nickname,\n headimgurl: headimgurl,\n authData: {\n openid: openid,\n unionid: unionid,\n access_token: openid,\n expires_in: 99999999,\n loginType: 'wechat',\n },\n };\n loadingCallback && loadingCallback();\n doLeanCloudLogin(\n userData.authData,\n userData,\n ({ user, error: error2 }) => {\n onLoginFinish({ user, error: error2 });\n }\n );\n }\n }\n );\n } else if (type === LoginType.LoginTypeWeChatScan) {\n WeChatLoginUtil.doLoginByScan(\n ToolkitConfig.WeiXinId,\n ToolkitConfig.WeiXinSecret,\n qrcodeCallback!,\n ({\n nickname,\n headimgurl,\n openid,\n unionid,\n error,\n }: {\n nickname: string;\n headimgurl: string;\n openid: string;\n unionid: string;\n error: any;\n }) => {\n if (error) {\n onLoginFinish({ error });\n } else {\n let userData = {\n nickname: nickname,\n headimgurl: headimgurl,\n authData: {\n openid: openid,\n unionid: unionid,\n access_token: openid,\n expires_in: 99999999,\n loginType: 'wechat',\n },\n };\n loadingCallback && loadingCallback();\n doLeanCloudLogin(\n userData.authData,\n userData,\n ({ user, error: error2 }) => {\n onLoginFinish({ user, error: error2 });\n }\n );\n }\n }\n );\n } else if (type === LoginType.LoginTypeVisitor) {\n const uniqueId = getUniqueIdSync();\n console.log(uniqueId);\n let userData = {\n nickname: 'Visitor',\n authData: {\n openid: uniqueId,\n access_token: uniqueId,\n expires_in: 99999999,\n loginType: 'visitor',\n },\n };\n loadingCallback && loadingCallback();\n doLeanCloudLogin(userData.authData, userData, ({ user, error }) => {\n onLoginFinish({ user, error });\n });\n } else {\n onLoginFinish({ error: 'Unknown Login Type' });\n }\n },\n\n logOut: (callback?: Function) => {\n console.log('onLogout');\n AV.User.logOut();\n CURRENT_USER = null;\n callback && callback();\n Notification.postNotification('onLogout');\n },\n\n isLogin: () => {\n return LoginManager.currentUser() != null;\n },\n\n isVisitor: () => {\n return (\n LoginManager.isLogin() &&\n LoginManager.currentUser()?.type === LoginType.LoginTypeVisitor\n );\n },\n\n currentUser: () => {\n // console.log('current user is ', CURRENT_USER);\n return CURRENT_USER;\n },\n\n batchUpdateUser: async (\n keys: string[],\n values: any[],\n callback?: Function\n ) => {\n console.log('Batch Update User Begin: ' + keys + ' ' + values);\n const user = await AV.User.currentAsync();\n if (!user) {\n return;\n }\n const oldValues = [];\n for (let i = 0; i < keys.length; i++) {\n oldValues.push(user.get(keys[i]));\n user.set(keys[i], values[i]);\n }\n try {\n const newUser = await user.save();\n CURRENT_USER = AVUserToLocalUser(newUser);\n console.log('Batch Update User End', user);\n callback && callback();\n } catch (e) {\n console.error(e);\n for (let i = 0; i < keys.length; i++) {\n user.set(keys[i], oldValues[i]);\n }\n callback && callback(e);\n }\n },\n\n updateUser: (key: string, value: any, callback?: Function) => {\n LoginManager.batchUpdateUser([key], [value], callback);\n },\n\n deleteUser: async (callback: Function) => {\n try {\n if (!CURRENT_USER) {\n return;\n }\n if (CURRENT_USER.type === LoginType.LoginTypeApple) {\n await AppleLoginUtil.requestDeleteAccount();\n }\n const user = await AV.User.currentAsync();\n console.log('get user success');\n await user.destroy();\n console.log('delete user success');\n callback();\n } catch (error) {\n console.error(error);\n callback(error);\n }\n },\n\n lastLoginType: () => {\n return PrefData.getValue(BuildInPrefs.LastLoginType);\n },\n\n isRegisterInThisDevice: () => {\n return PrefData.getValue(BuildInPrefs.RegisterInThisDevice);\n },\n\n fetchWeChatAvatar: (callback: FetchImageFunctionType) => {\n WeChatLoginUtil.doLogin(\n ToolkitConfig.WeiXinId,\n ToolkitConfig.WeiXinSecret,\n ({ headimgurl }: { headimgurl: string }) => {\n callback({ headimgurl });\n }\n );\n },\n\n // 已注册天数\n getRegisterDays: () => {\n if (!LoginManager.isLogin()) {\n return 0;\n }\n const createTime = LoginManager.currentUser()?.AVUser.getCreatedAt();\n if (createTime) {\n const diff = new Date().getTime() - createTime.getTime();\n const diffDay = Math.max(Math.ceil(diff / (24 * 60 * 60 * 1000)), 0);\n return diffDay;\n }\n return 0;\n },\n};\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { sha1 } from 'js-sha1';
|
|
2
|
-
import { NativeModules } from 'react-native';
|
|
2
|
+
import { NativeEventEmitter, NativeModules } from 'react-native';
|
|
3
3
|
import * as WeChat from 'react-native-wechat-lib';
|
|
4
4
|
import { Tool } from './Tool';
|
|
5
5
|
|
|
@@ -76,10 +76,11 @@ export const WeChatLoginUtil = {
|
|
|
76
76
|
const nonceStr = Tool.generateObjectId();
|
|
77
77
|
const timestamp = String(Math.round(Date.now() / 1000));
|
|
78
78
|
const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
|
|
79
|
+
const qrcodeEmitter = new NativeEventEmitter(NativeModules.WeChat);
|
|
80
|
+
const subscription = qrcodeEmitter.addListener('onAuthGotQrcode', res => onQRGet(res.qrcode));
|
|
79
81
|
NativeModules.WeChat.authByScan(WeiXinId, nonceStr, timestamp, 'snsapi_userinfo', signature, '', ret => {
|
|
80
|
-
onQRGet(ret === null || ret === void 0 ? void 0 : ret.qrcode);
|
|
81
|
-
}, ret => {
|
|
82
82
|
console.log('scan result', ret);
|
|
83
|
+
subscription.remove();
|
|
83
84
|
if (!(ret !== null && ret !== void 0 && ret.authCode)) {
|
|
84
85
|
callback({
|
|
85
86
|
error: 'Auth code 获取失败'
|
|
@@ -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","origin","ret","console","log","getUserInfo","code","callback","accessTokenUrl","then","userInfoUrl","openid","res2","nickname","headimgurl","unionid","catch","e","warn","error","WeChatLoginUtil","doLogin","sendAuthRequest","doLoginByScan","onQRGet","generateObjectId","String","Math","round","Date","now","signature","
|
|
1
|
+
{"version":3,"names":["sha1","NativeEventEmitter","NativeModules","WeChat","Tool","getAccessToken","WeiXinId","WeiXinSecret","url","response","fetch","res","json","access_token","getSDKTicket","accessToken","ticket","createSignature","nonceStr","sdkTicket","timestamp","origin","ret","console","log","getUserInfo","code","callback","accessTokenUrl","then","userInfoUrl","openid","res2","nickname","headimgurl","unionid","catch","e","warn","error","WeChatLoginUtil","doLogin","sendAuthRequest","doLoginByScan","onQRGet","generateObjectId","String","Math","round","Date","now","signature","qrcodeEmitter","subscription","addListener","qrcode","authByScan","remove","authCode"],"sources":["WeChatLoginUtil.ts"],"sourcesContent":["import { sha1 } from 'js-sha1';\nimport { NativeEventEmitter, NativeModules } from 'react-native';\nimport * as WeChat from 'react-native-wechat-lib';\nimport { Tool } from './Tool';\n\n// https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html\nconst getAccessToken = async (WeiXinId: string, WeiXinSecret: string) => {\n let url =\n 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' +\n WeiXinId +\n '&secret=' +\n WeiXinSecret;\n const response = await fetch(url);\n const res = await response.json();\n return res.access_token;\n};\n\nconst getSDKTicket = async (accessToken: string) => {\n let url =\n 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=2&access_token=' +\n accessToken;\n const response = await fetch(url);\n const res = await response.json();\n return res.ticket;\n};\n\nconst createSignature = (\n WeiXinId: string,\n nonceStr: string,\n sdkTicket: string,\n timestamp: string\n) => {\n const origin =\n 'appid=' +\n WeiXinId +\n '&noncestr=' +\n nonceStr +\n '&sdk_ticket=' +\n sdkTicket +\n '×tamp=' +\n timestamp;\n const ret = sha1(origin);\n console.log('wx scan signature', origin, ret);\n return ret;\n};\n\nconst getUserInfo = (\n WeiXinId: string,\n WeiXinSecret: string,\n code: string,\n callback: Function\n) => {\n let accessTokenUrl =\n 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' +\n WeiXinId +\n '&secret=' +\n WeiXinSecret +\n '&code=' +\n code +\n '&grant_type=authorization_code';\n fetch(accessTokenUrl)\n .then((res) => {\n return res.json();\n })\n .then((res) => {\n console.log('wechat get access code success: ', res.access_token);\n let userInfoUrl =\n 'https://api.weixin.qq.com/sns/userinfo?access_token=' +\n res.access_token +\n '&openid=' +\n res.openid;\n fetch(userInfoUrl)\n .then((res2) => {\n return res2.json();\n })\n .then((json) => {\n console.log('wechat get user info success: ', json);\n callback({\n nickname: json.nickname,\n headimgurl: json.headimgurl,\n openid: json.openid,\n unionid: json.unionid,\n });\n })\n .catch((e) => {\n console.warn('wechat get user info fail ', e);\n callback({ error: e });\n });\n })\n .catch((e) => {\n console.warn('wechat get access code fail ', e);\n callback({ error: e });\n });\n};\n\nexport const WeChatLoginUtil = {\n doLogin: (WeiXinId: string, WeiXinSecret: string, callback: Function) => {\n WeChat.sendAuthRequest('snsapi_userinfo')\n .then((ret) => {\n console.log('wechat auth success ', ret);\n if (!ret?.code) {\n callback({ error: 'Auth code 获取失败' });\n return;\n }\n getUserInfo(WeiXinId, WeiXinSecret, ret?.code, callback);\n })\n .catch((e: any) => {\n console.warn('wechat auth fail ', e);\n callback({ error: e });\n });\n },\n\n doLoginByScan: async (\n WeiXinId: string,\n WeiXinSecret: string,\n onQRGet: (qrcode: string) => void,\n callback: Function\n ) => {\n const accessToken = await getAccessToken(WeiXinId, WeiXinSecret);\n const ticket = await getSDKTicket(accessToken);\n const nonceStr = Tool.generateObjectId();\n const timestamp = String(Math.round(Date.now() / 1000));\n const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);\n\n const qrcodeEmitter = new NativeEventEmitter(NativeModules.WeChat);\n\n const subscription = qrcodeEmitter.addListener('onAuthGotQrcode', (res) =>\n onQRGet(res.qrcode)\n );\n\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 subscription.remove();\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/lib/module/constant.js
CHANGED
|
@@ -7,6 +7,7 @@ export let LoginType = /*#__PURE__*/function (LoginType) {
|
|
|
7
7
|
LoginType[LoginType["LoginTypeApple"] = 0] = "LoginTypeApple";
|
|
8
8
|
LoginType[LoginType["LoginTypeWeChat"] = 1] = "LoginTypeWeChat";
|
|
9
9
|
LoginType[LoginType["LoginTypeVisitor"] = 2] = "LoginTypeVisitor";
|
|
10
|
+
LoginType[LoginType["LoginTypeWeChatScan"] = 3] = "LoginTypeWeChatScan";
|
|
10
11
|
return LoginType;
|
|
11
12
|
}({});
|
|
12
13
|
//# sourceMappingURL=constant.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["LoginState","LoginType"],"sources":["constant.ts"],"sourcesContent":["import { User } from 'leancloud-storage';\n\nexport interface UserType {\n nickname: string;\n email: string;\n headimgurl: string;\n type: number;\n isNew?: boolean;\n AVUser: User;\n}\n\nexport interface LoginAuthDataType {\n openid: string;\n unionid?: string;\n access_token: string | null;\n expires_in: number;\n loginType: string;\n}\n\nexport interface LoginUserDataType {\n userId?: string;\n nickname?: string;\n headimgurl?: string;\n email?: string | null;\n authData: LoginAuthDataType;\n}\n\nexport enum LoginState {\n NOTLOGIN,\n AUTHORIZED,\n}\n\nexport enum LoginType {\n LoginTypeApple,\n LoginTypeWeChat,\n LoginTypeVisitor,\n}\n"],"mappings":"AA2BA,WAAYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAKtB,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA"}
|
|
1
|
+
{"version":3,"names":["LoginState","LoginType"],"sources":["constant.ts"],"sourcesContent":["import { User } from 'leancloud-storage';\n\nexport interface UserType {\n nickname: string;\n email: string;\n headimgurl: string;\n type: number;\n isNew?: boolean;\n AVUser: User;\n}\n\nexport interface LoginAuthDataType {\n openid: string;\n unionid?: string;\n access_token: string | null;\n expires_in: number;\n loginType: string;\n}\n\nexport interface LoginUserDataType {\n userId?: string;\n nickname?: string;\n headimgurl?: string;\n email?: string | null;\n authData: LoginAuthDataType;\n}\n\nexport enum LoginState {\n NOTLOGIN,\n AUTHORIZED,\n}\n\nexport enum LoginType {\n LoginTypeApple,\n LoginTypeWeChat,\n LoginTypeVisitor,\n LoginTypeWeChatScan,\n}\n"],"mappings":"AA2BA,WAAYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAKtB,WAAYC,SAAS,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA"}
|
|
@@ -10,7 +10,7 @@ export type LoginResultDataType = {
|
|
|
10
10
|
};
|
|
11
11
|
export declare const LoginManager: {
|
|
12
12
|
autoLogin: () => Promise<void>;
|
|
13
|
-
login: (type: LoginType, devAuthData: LoginAuthDataType | null | undefined, loadingCallback: Function) => Promise<void>;
|
|
13
|
+
login: (type: LoginType, devAuthData: LoginAuthDataType | null | undefined, loadingCallback: Function, qrcodeCallback?: ((qrcode: string) => void) | undefined) => Promise<void>;
|
|
14
14
|
logOut: (callback?: Function) => void;
|
|
15
15
|
isLogin: () => boolean;
|
|
16
16
|
isVisitor: () => boolean;
|
package/package.json
CHANGED
package/src/LoginManager.ts
CHANGED
|
@@ -136,7 +136,8 @@ export const LoginManager = {
|
|
|
136
136
|
login: async (
|
|
137
137
|
type: LoginType,
|
|
138
138
|
devAuthData: LoginAuthDataType | null = null,
|
|
139
|
-
loadingCallback: Function
|
|
139
|
+
loadingCallback: Function,
|
|
140
|
+
qrcodeCallback?: (qrcode: string) => void
|
|
140
141
|
) => {
|
|
141
142
|
// 如果之前已经鉴权过,则直接使用上次鉴权的 AuthData
|
|
142
143
|
const cuurentUser = await AV.User.currentAsync();
|
|
@@ -233,6 +234,49 @@ export const LoginManager = {
|
|
|
233
234
|
}
|
|
234
235
|
}
|
|
235
236
|
);
|
|
237
|
+
} else if (type === LoginType.LoginTypeWeChatScan) {
|
|
238
|
+
WeChatLoginUtil.doLoginByScan(
|
|
239
|
+
ToolkitConfig.WeiXinId,
|
|
240
|
+
ToolkitConfig.WeiXinSecret,
|
|
241
|
+
qrcodeCallback!,
|
|
242
|
+
({
|
|
243
|
+
nickname,
|
|
244
|
+
headimgurl,
|
|
245
|
+
openid,
|
|
246
|
+
unionid,
|
|
247
|
+
error,
|
|
248
|
+
}: {
|
|
249
|
+
nickname: string;
|
|
250
|
+
headimgurl: string;
|
|
251
|
+
openid: string;
|
|
252
|
+
unionid: string;
|
|
253
|
+
error: any;
|
|
254
|
+
}) => {
|
|
255
|
+
if (error) {
|
|
256
|
+
onLoginFinish({ error });
|
|
257
|
+
} else {
|
|
258
|
+
let userData = {
|
|
259
|
+
nickname: nickname,
|
|
260
|
+
headimgurl: headimgurl,
|
|
261
|
+
authData: {
|
|
262
|
+
openid: openid,
|
|
263
|
+
unionid: unionid,
|
|
264
|
+
access_token: openid,
|
|
265
|
+
expires_in: 99999999,
|
|
266
|
+
loginType: 'wechat',
|
|
267
|
+
},
|
|
268
|
+
};
|
|
269
|
+
loadingCallback && loadingCallback();
|
|
270
|
+
doLeanCloudLogin(
|
|
271
|
+
userData.authData,
|
|
272
|
+
userData,
|
|
273
|
+
({ user, error: error2 }) => {
|
|
274
|
+
onLoginFinish({ user, error: error2 });
|
|
275
|
+
}
|
|
276
|
+
);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
);
|
|
236
280
|
} else if (type === LoginType.LoginTypeVisitor) {
|
|
237
281
|
const uniqueId = getUniqueIdSync();
|
|
238
282
|
console.log(uniqueId);
|
package/src/WeChatLoginUtil.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { sha1 } from 'js-sha1';
|
|
2
|
-
import { NativeModules } from 'react-native';
|
|
2
|
+
import { NativeEventEmitter, NativeModules } from 'react-native';
|
|
3
3
|
import * as WeChat from 'react-native-wechat-lib';
|
|
4
4
|
import { Tool } from './Tool';
|
|
5
5
|
|
|
@@ -122,6 +122,12 @@ export const WeChatLoginUtil = {
|
|
|
122
122
|
const timestamp = String(Math.round(Date.now() / 1000));
|
|
123
123
|
const signature = createSignature(WeiXinId, nonceStr, ticket, timestamp);
|
|
124
124
|
|
|
125
|
+
const qrcodeEmitter = new NativeEventEmitter(NativeModules.WeChat);
|
|
126
|
+
|
|
127
|
+
const subscription = qrcodeEmitter.addListener('onAuthGotQrcode', (res) =>
|
|
128
|
+
onQRGet(res.qrcode)
|
|
129
|
+
);
|
|
130
|
+
|
|
125
131
|
NativeModules.WeChat.authByScan(
|
|
126
132
|
WeiXinId,
|
|
127
133
|
nonceStr,
|
|
@@ -129,11 +135,9 @@ export const WeChatLoginUtil = {
|
|
|
129
135
|
'snsapi_userinfo',
|
|
130
136
|
signature,
|
|
131
137
|
'',
|
|
132
|
-
(ret: any) => {
|
|
133
|
-
onQRGet(ret?.qrcode);
|
|
134
|
-
},
|
|
135
138
|
(ret: any) => {
|
|
136
139
|
console.log('scan result', ret);
|
|
140
|
+
subscription.remove();
|
|
137
141
|
if (!ret?.authCode) {
|
|
138
142
|
callback({ error: 'Auth code 获取失败' });
|
|
139
143
|
return;
|