首次完整推送,
V:1.20240808.006
This commit is contained in:
95
uni_modules/uni-id-pages/init.js
Normal file
95
uni_modules/uni-id-pages/init.js
Normal file
@ -0,0 +1,95 @@
|
||||
// 导入配置
|
||||
import config from '@/uni_modules/uni-id-pages/config.js'
|
||||
// uni-id的云对象
|
||||
const uniIdCo = uniCloud.importObject('uni-id-co', {
|
||||
customUI: true
|
||||
})
|
||||
// 用户配置的登录方式、是否打开调试模式
|
||||
const {
|
||||
loginTypes,
|
||||
debug
|
||||
} = config
|
||||
|
||||
export default async function () {
|
||||
// 有打开调试模式的情况下
|
||||
if (debug) {
|
||||
// 1. 检查本地uni-id-pages中配置的登录方式,服务器端是否已经配置正确。否则提醒并引导去配置
|
||||
// 调用云对象,获取服务端已正确配置的登录方式
|
||||
const {
|
||||
supportedLoginType
|
||||
} = await uniIdCo.getSupportedLoginType()
|
||||
console.log('supportedLoginType: ' + JSON.stringify(supportedLoginType))
|
||||
// 登录方式,服务端和客户端的映射关系
|
||||
const 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',
|
||||
weixinMobile: 'weixin'
|
||||
}
|
||||
// 遍历客户端配置的登录方式,与服务端比对。并在错误时抛出错误提示
|
||||
const 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"`
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// #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
|
||||
message
|
||||
}) {
|
||||
// console.error('onDBError', {code,message});
|
||||
}
|
||||
// 解绑clientDB错误事件
|
||||
// db.off('error', onDBError)
|
||||
|
||||
// 4. 同步客户端push_clientid至device表
|
||||
if (uniCloud.onRefreshToken) {
|
||||
uniCloud.onRefreshToken(() => {
|
||||
// console.log('onRefreshToken');
|
||||
if (uni.getPushClientId) {
|
||||
uni.getPushClientId({
|
||||
success: async function (e) {
|
||||
// console.log(e)
|
||||
const pushClientId = e.cid
|
||||
// console.log(pushClientId);
|
||||
const res = await uniIdCo.setPushCid({
|
||||
pushClientId
|
||||
})
|
||||
// console.log('getPushClientId', res);
|
||||
},
|
||||
fail (e) {
|
||||
// console.log(e)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user