init.js 2.8 KB
Newer Older
DCloud_JSON's avatar
DCloud_JSON 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14
// 导入配置
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() {

DCloud_JSON's avatar
1.0.2  
DCloud_JSON 已提交
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
		// 有打开调试模式的情况下
		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"`
				);
			}
DCloud_JSON's avatar
DCloud_JSON 已提交
45 46
		}

DCloud_JSON's avatar
1.0.2  
DCloud_JSON 已提交
47 48 49 50 51 52 53 54 55 56 57
		// #ifdef APP-PLUS
		//如果uni-id-pages配置的登录功能有一键登录,有则执行预登录(异步)
		if (loginTypes.includes('univerify')) {
			uni.preLogin({
				provider: 'univerify',
				complete: e => {
					console.log(e);
				}
			})
		}
		// #endif
DCloud_JSON's avatar
DCloud_JSON 已提交
58

DCloud_JSON's avatar
1.0.2  
DCloud_JSON 已提交
59 60 61 62 63 64 65
		//3. 绑定clientDB错误事件
		// clientDB对象
		const db = uniCloud.database()
		db.on('error', onDBError)
		//clientDB的错误提示
		function onDBError({
			code, // 错误码详见https://uniapp.dcloud.net.cn/uniCloud/clientdb?id=returnvalue
DCloud_JSON's avatar
DCloud_JSON 已提交
66
			message
DCloud_JSON's avatar
1.0.2  
DCloud_JSON 已提交
67 68 69 70 71 72 73 74
		}) {
			console.error('onDBError', {
				code,
				message
			});
		}
		// 解绑clientDB错误事件
		//db.off('error', onDBError)
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
		

		//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)
						}
					})
				}
			})
		}
DCloud_JSON's avatar
1.0.2  
DCloud_JSON 已提交
99
}