init.js 2.2 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() {

15
	// 有打开调试模式的情况下
DCloud_JSON's avatar
DCloud_JSON 已提交
16 17
	if (debug) {
		// 1. 检查本地uni-id-pages中配置的登录方式,服务器端是否已经配置正确。否则提醒并引导去配置
DCloud_JSON's avatar
1.0.0  
DCloud_JSON 已提交
18
		//调用云对象,获取服务端已正确配置的登录方式
DCloud_JSON's avatar
DCloud_JSON 已提交
19 20 21
		let {
			supportedLoginType
		} = await uniIdCo.getSupportedLoginType()
22
		console.log("supportedLoginType: " + JSON.stringify(supportedLoginType));
DCloud_JSON's avatar
1.0.0  
DCloud_JSON 已提交
23
		//登录方式,服务端和客户端的映射关系
DCloud_JSON's avatar
DCloud_JSON 已提交
24 25 26 27 28 29 30 31 32 33 34
		let data = {
			smsCode: 'mobile-code',
			univerify: 'univerify',
			username: 'username-password',
			weixin: 'weixin',
			qq: 'qq',
			xiaomi: 'xiaomi',
			sinaweibo: 'sinaweibo',
			taobao: 'taobao',
			facebook: 'facebook',
			google: 'google',
DCloud_JSON's avatar
1.0.0  
DCloud_JSON 已提交
35
			alipay: 'alipay',
DCloud_JSON's avatar
DCloud_JSON 已提交
36 37
			apple:"apple"
		}
DCloud_JSON's avatar
1.0.0  
DCloud_JSON 已提交
38
		//遍历客户端配置的登录方式,与服务端比对。并在错误时抛出错误提示
DCloud_JSON's avatar
DCloud_JSON 已提交
39 40 41 42 43 44 45 46 47
		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
DCloud_JSON's avatar
1.0.0  
DCloud_JSON 已提交
48
	//如果uni-id-pages配置的登录功能有一键登录,有则执行预登录(异步)
DCloud_JSON's avatar
DCloud_JSON 已提交
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
	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错误事件
DCloud_JSON's avatar
1.0.0  
DCloud_JSON 已提交
74 75
	//db.off('error', onDBError)
}