From 7deb731a267654b65e0c0a51080ae2fa5d79ef2d Mon Sep 17 00:00:00 2001 From: linju Date: Wed, 6 Jul 2022 22:34:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=831.0.4=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- manifest.json | 2 +- uni_modules/uni-id-pages/changelog.md | 1 + uni_modules/uni-id-pages/init.js | 158 +++++++++--------- .../database/opendb-device.schema.json | 142 ++++++++++++++++ .../database/uni-id-device.schema.json | 83 +++++++++ 5 files changed, 306 insertions(+), 80 deletions(-) create mode 100644 uni_modules/uni-id-pages/uniCloud/database/opendb-device.schema.json create mode 100644 uni_modules/uni-id-pages/uniCloud/database/uni-id-device.schema.json diff --git a/manifest.json b/manifest.json index 56277b7..f1a66f4 100644 --- a/manifest.json +++ b/manifest.json @@ -116,7 +116,7 @@ }, "usingComponents" : true, "unipush" : { - "enable" : true + "enable" : false } }, "mp-alipay" : { diff --git a/uni_modules/uni-id-pages/changelog.md b/uni_modules/uni-id-pages/changelog.md index efa978c..f0f518f 100644 --- a/uni_modules/uni-id-pages/changelog.md +++ b/uni_modules/uni-id-pages/changelog.md @@ -1,5 +1,6 @@ ## 1.0.4(2022-07-06) - uni-id-co增加clientInfo字段类型校验 +- 监听token更新时机,同步客户端push_clientid至uni-id-device表,改为:同步客户端push_clientid至uni-id-device表和opendb-device表 ## 1.0.3(2022-07-05) 新增监听token更新时机,同步客户端push_clientid至uni-id-device表 ## 1.0.2(2022-07-04) diff --git a/uni_modules/uni-id-pages/init.js b/uni_modules/uni-id-pages/init.js index 65a59a1..a2a5824 100644 --- a/uni_modules/uni-id-pages/init.js +++ b/uni_modules/uni-id-pages/init.js @@ -12,88 +12,88 @@ const { export default async function() { - // 有打开调试模式的情况下 - if (debug) { - // 1. 检查本地uni-id-pages中配置的登录方式,服务器端是否已经配置正确。否则提醒并引导去配置 - //调用云对象,获取服务端已正确配置的登录方式 - let { - supportedLoginType - } = await uniIdCo.getSupportedLoginType() - console.log("supportedLoginType: " + JSON.stringify(supportedLoginType)); - //登录方式,服务端和客户端的映射关系 - let data = { - smsCode: 'mobile-code', - univerify: 'univerify', - username: 'username-password', - weixin: 'weixin', - qq: 'qq', - xiaomi: 'xiaomi', - sinaweibo: 'sinaweibo', - taobao: 'taobao', - facebook: 'facebook', - google: 'google', - alipay: 'alipay', - apple: "apple" - } - //遍历客户端配置的登录方式,与服务端比对。并在错误时抛出错误提示 - let list = loginTypes.filter(type => !supportedLoginType.includes(data[type])) - if (list.length) { - console.error( - `错误:前端启用的登录方式:${list.join(',')};没有在服务端完成配置。配置文件路径:"/uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json"` - ); - } + // 有打开调试模式的情况下 + if (debug) { + // 1. 检查本地uni-id-pages中配置的登录方式,服务器端是否已经配置正确。否则提醒并引导去配置 + //调用云对象,获取服务端已正确配置的登录方式 + let { + supportedLoginType + } = await uniIdCo.getSupportedLoginType() + console.log("supportedLoginType: " + JSON.stringify(supportedLoginType)); + //登录方式,服务端和客户端的映射关系 + let data = { + smsCode: 'mobile-code', + univerify: 'univerify', + username: 'username-password', + weixin: 'weixin', + qq: 'qq', + xiaomi: 'xiaomi', + sinaweibo: 'sinaweibo', + taobao: 'taobao', + facebook: 'facebook', + google: 'google', + alipay: 'alipay', + apple: "apple" } - - // #ifdef APP-PLUS - //如果uni-id-pages配置的登录功能有一键登录,有则执行预登录(异步) - if (loginTypes.includes('univerify')) { - uni.preLogin({ - provider: 'univerify', - complete: e => { - console.log(e); - } - }) + //遍历客户端配置的登录方式,与服务端比对。并在错误时抛出错误提示 + let list = loginTypes.filter(type => !supportedLoginType.includes(data[type])) + if (list.length) { + console.error( + `错误:前端启用的登录方式:${list.join(',')};没有在服务端完成配置。配置文件路径:"/uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json"` + ); } - // #endif + } + + // #ifdef APP-PLUS + //如果uni-id-pages配置的登录功能有一键登录,有则执行预登录(异步) + if (loginTypes.includes('univerify')) { + uni.preLogin({ + provider: 'univerify', + complete: e => { + console.log(e); + } + }) + } + // #endif - //3. 绑定clientDB错误事件 - // clientDB对象 - const db = uniCloud.database() - db.on('error', onDBError) - //clientDB的错误提示 - function onDBError({ - code, // 错误码详见https://uniapp.dcloud.net.cn/uniCloud/clientdb?id=returnvalue + //3. 绑定clientDB错误事件 + // clientDB对象 + const db = uniCloud.database() + db.on('error', onDBError) + //clientDB的错误提示 + function onDBError({ + code, // 错误码详见https://uniapp.dcloud.net.cn/uniCloud/clientdb?id=returnvalue + message + }) { + console.error('onDBError', { + code, message - }) { - console.error('onDBError', { - code, - message - }); - } - // 解绑clientDB错误事件 - //db.off('error', onDBError) - + }); + } + // 解绑clientDB错误事件 + //db.off('error', onDBError) - //4. 同步客户端push_clientid至device表 - if (uniCloud.onRefreshToken) { - uniCloud.onRefreshToken(() => { - console.log('onRefreshToken'); - if (uni.canIUse('getPushClientId')) { - uni.getPushClientId({ - success: async function(e) { - console.log(e) - let pushClientId = e.cid - console.log(pushClientId); - let res = await uniIdCo.setPushCid({ - pushClientId - }) - console.log(res); - }, - fail(e) { - console.log(e) - } - }) - } - }) - } + + //4. 同步客户端push_clientid至device表 + if (uniCloud.onRefreshToken) { + uniCloud.onRefreshToken(() => { + console.log('onRefreshToken'); + if (uni.getPushClientId) { + uni.getPushClientId({ + success: async function(e) { + console.log(e) + let pushClientId = e.cid + console.log(pushClientId); + let res = await uniIdCo.setPushCid({ + pushClientId + }) + console.log('getPushClientId', res); + }, + fail(e) { + console.log(e) + } + }) + } + }) + } } diff --git a/uni_modules/uni-id-pages/uniCloud/database/opendb-device.schema.json b/uni_modules/uni-id-pages/uniCloud/database/opendb-device.schema.json new file mode 100644 index 0000000..7c6cb44 --- /dev/null +++ b/uni_modules/uni-id-pages/uniCloud/database/opendb-device.schema.json @@ -0,0 +1,142 @@ +{ + "bsonType": "object", + "required": [], + "permission": { + "read": false, + "create": false, + "update": false, + "delete": false + }, + "properties": { + "_id": { + "description": "ID,系统自动生成" + }, + "appid": { + "bsonType": "string", + "description": "DCloud appid" + }, + "device_id": { + "bsonType": "string", + "description": "设备唯一标识" + }, + "vendor": { + "bsonType": "string", + "description": "设备厂商" + }, + "push_clientid": { + "bsonType": "string", + "description": "推送设备客户端标识" + }, + "imei": { + "bsonType": "string", + "description": "国际移动设备识别码IMEI(International Mobile Equipment Identity)" + }, + "oaid": { + "bsonType": "string", + "description": "移动智能设备标识公共服务平台提供的匿名设备标识符(OAID)" + }, + "idfa": { + "bsonType": "string", + "description": "iOS平台配置应用使用广告标识(IDFA)" + }, + "imsi": { + "bsonType": "string", + "description": "国际移动用户识别码(International Mobile Subscriber Identification Number)" + }, + "model": { + "bsonType": "string", + "description": "设备型号" + }, + "platform": { + "bsonType": "string", + "description": "平台类型" + }, + "uni_platform": { + "bsonType": "string", + "description": "uni-app 运行平台,与条件编译平台相同。" + }, + "os_name": { + "bsonType": "string", + "description": "ios|android|windows|mac|linux " + }, + "os_version": { + "bsonType": "string", + "description": "操作系统版本号 " + }, + "os_language": { + "bsonType": "string", + "description": "操作系统语言 " + }, + "os_theme": { + "bsonType": "string", + "description": "操作系统主题 light|dark" + }, + "pixel_ratio": { + "bsonType": "string", + "description": "设备像素比 " + }, + "network_model": { + "bsonType": "string", + "description": "设备网络型号wifi/3G/4G/" + }, + "window_width": { + "bsonType": "string", + "description": "设备窗口宽度 " + }, + "window_height": { + "bsonType": "string", + "description": "设备窗口高度" + }, + "screen_width": { + "bsonType": "string", + "description": "设备屏幕宽度" + }, + "screen_height": { + "bsonType": "string", + "description": "设备屏幕高度" + }, + "rom_name": { + "bsonType": "string", + "description": "rom 名称" + }, + "rom_version": { + "bsonType": "string", + "description": "rom 版本" + }, + "location_latitude": { + "bsonType": "double", + "description": "纬度" + }, + "location_longitude": { + "bsonType": "double", + "description": "经度" + }, + "location_country": { + "bsonType": "string", + "description": "国家" + }, + "location_province": { + "bsonType": "string", + "description": "省份" + }, + "location_city": { + "bsonType": "string", + "description": "城市" + }, + "create_date": { + "bsonType": "timestamp", + "description": "创建时间", + "forceDefaultValue": { + "$env": "now" + } + }, + "last_update_date": { + "bsonType": "timestamp", + "description": "最后一次修改时间", + "forceDefaultValue": { + "$env": "now" + } + } + }, + "version": "0.0.1" +} \ No newline at end of file diff --git a/uni_modules/uni-id-pages/uniCloud/database/uni-id-device.schema.json b/uni_modules/uni-id-pages/uniCloud/database/uni-id-device.schema.json new file mode 100644 index 0000000..4981d75 --- /dev/null +++ b/uni_modules/uni-id-pages/uniCloud/database/uni-id-device.schema.json @@ -0,0 +1,83 @@ +{ + "bsonType": "object", + "required": [ + "user_id" + ], + "properties": { + "_id": { + "description": "ID,系统自动生成" + }, + "user_id": { + "bsonType": "string", + "description": "用户id,参考uni-id-users表" + }, + "ua": { + "bsonType": "string", + "description": "userAgent" + }, + "uuid": { + "bsonType": "string", + "description": "设备唯一标识(需要加密存储)" + }, + "os_name": { + "bsonType": "string", + "description": "ios|android|windows|mac|linux " + }, + "os_version": { + "bsonType": "string", + "description": "操作系统版本号 " + }, + "os_language": { + "bsonType": "string", + "description": "操作系统语言 " + }, + "os_theme": { + "bsonType": "string", + "description": "操作系统主题 light|dark" + }, + "vendor": { + "bsonType": "string", + "description": "设备厂商" + }, + "push_clientid": { + "bsonType": "string", + "description": "推送设备客户端标识" + }, + "imei": { + "bsonType": "string", + "description": "国际移动设备识别码IMEI(International Mobile Equipment Identity)" + }, + "oaid": { + "bsonType": "string", + "description": "移动智能设备标识公共服务平台提供的匿名设备标识符(OAID)" + }, + "idfa": { + "bsonType": "string", + "description": "iOS平台配置应用使用广告标识(IDFA)" + }, + "model": { + "bsonType": "string", + "description": "设备型号" + }, + "platform": { + "bsonType": "string", + "description": "平台类型" + }, + "create_date": { + "bsonType": "timestamp", + "description": "创建时间", + "forceDefaultValue": { + "$env": "now" + } + }, + "last_active_date": { + "bsonType": "timestamp", + "description": "最后登录时间" + }, + "last_active_ip": { + "bsonType": "string", + "description": "最后登录IP" + } + }, + "version": "0.0.1" +} \ No newline at end of file -- GitLab