// 导入配置 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中配置的登录方式,服务器端是否已经配置正确。否则提醒并引导去配置 //调用云对象,获取服务端已正确配置的登录方式 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"` ); } } // #ifdef APP-PLUS //如果uni-id-pages配置的登录功能有一键登录,有则执行预登录(异步) if (loginTypes.includes('univerify')) { uni.preLogin({ provider: 'univerify', complete: e => { console.log(e); } }) } // #endif /* 注释此代码块原因:与uni-starter中的appinit逻辑一致 //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至uni-id-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.error(e, "uni-id-pages 默认在刷新token(登录、注销、切换用户)后获取push客户端标识同步至uni-id-device表;", "\n", "如果你不使用push模块,请注释或删除,路径:/uni-starter/uni_modules/uni-id-pages/init.js 第79-103行代码" ) } }) } }) } }