cc.Class({ /** * 收到JNI发上来的事件 * * @param {Object} eventData */ handleEvent (eventData) { /* eventData参数: * @param {String} sdkName * @param {String} eventKey * @param {Integer} code * @param {String} errorMsg * @param {Object} data */ /* 授权回调事件,eventKey如下: auth_login_result // SDK授权完成 eventData.data // 授权信息 auth_logout_result // SDK账号登出 eventData.data // 授权信息 auth_change_account // SDK切换账号完成 eventData.data // 授权信息 auth_exit // 退出游戏 获取实名认证回调事件,eventKey如下: auth_real_name_info // 回调实名认证信息 eventData.data.age {Integer} 年龄 eventData.data.isAdult {Boolean} 是否成年 eventData.data.isRealName {Boolean} 是否已实名 eventData.data.isEndGame {Boolean} 是否结束游戏 */ let eventKey = eventData.eventKey; switch (eventKey) { case 'auth_login_result': { let authInfo = eventData.data; if (!authInfo) { authInfo = this.getAuthInfo(eventKey.sdkName); } cc.game.emit('e_middle_auth_login_result', eventData); break; } case 'auth_logout_result': { let authInfo = eventData.data; if (!authInfo) { authInfo = this.getAuthInfo(eventKey.sdkName); } cc.game.emit('e_middle_auth_logout_result', eventData); break; } case 'auth_change_account': { let authInfo = eventData.data; if (!authInfo) { authInfo = this.getAuthInfo(eventKey.sdkName); } cc.game.emit('e_middle_auth_change_account', eventData); break; } case 'auth_exit': { cc.game.end(); break; } case 'auth_real_name_info': { cc.game.emit('e_middle_auth_real_name_info', eventData); break; } default: break; } }, /** * 获取授权模块的配置信息 * * @author Pyden * @date 2020-03-23 * @returns {Object} * config.list 授权类型信息列表 */ getConfig () { if (!this._config) { let gameConfig = G.MiddleMgr.getGameConfig(); if (gameConfig && gameConfig.auth) { this._config = gameConfig.auth; } } return this._config; }, /** * 获取SDK授权信息列表 authorize_authorizeTypeList * * @author Pyden * @date 2020-03-11 * @returns {Array} * sdkName * authType {JMC.AUTHORIZE_TYPE} */ getAuthTypeInfoList () { let config = this.getConfig() || {}; return config.list; }, /** * 获取当前授权信息 * 注意:收到授权成功信息事件后,需要更新授权信息 * * @author Pyden * @date 2020-03-11 * @returns {Object} * sdkName 当前正在授权/授权完成的sdk名称 * authType 当前正在授权/授权完成的授权方式 * authStatus {JMC.AUTH_STATUS} 授权状态 authorize_isAuthorizeLoginSuccess * isWaitAuth 是否正在授权 authorize_isWaitAuthorizeLogin * uuid 用于绑定游戏账号的uuid * nickname 昵称 * headUrl 头像地址 */ getCurrentAuthInfo () { if (!this._currentAuthInfo) { // 优先取授权成功的,没有授权成功的话,就选第一个 let authTypeInfoList = this.getAuthTypeInfoList(); let ret; for (const v of authTypeInfoList) { let info = this.getAuthInfo(v.sdkName); if (!ret) { ret = info; } else { if (info.authStatus == JMC.AUTH_STATUS.LOGIN_SUCCESS) { ret = info; break; } } } this._currentAuthInfo = ret; } return this._currentAuthInfo; }, /** * 获取绑定账号的唯一标识 * * @author Pyden * @date 2020-03-23 * @returns {String} */ getUUID () { let authInfo = this.getCurrentAuthInfo() || {}; return authInfo.uuid; }, /** * SDK授权登录 authorize_loginWithType * * @param {String} sdkName * @param {Integer} authType */ login (sdkName, authType) { G.MiddleMgr.handleEvent({ module: 'auth', eventKey: 'auth_login_result', code: 200, data: { sdkName: 'Web', authType: authType, authStatus: JMC.AUTH_STATUS.LOGIN_SUCCESS, isWaitAuth: false, loginType: JMC.LOGIN_TYPE.NORMAL, uuid: 'openboxh5_' + G.MiddleDevice.getUDID(), } }); }, /** * SDK切换账号 authorize_changeLoginWay authorize_showLogin * * @param {String} sdkName * @returns {Boolean} 返回值表示是否回到授权界面重新授权 */ logout (sdkName) { return false; }, /** * 获取授权信息 * * @author Pyden * @date 2020-03-23 * @param {String} sdkName * @returns * sdkName 当前正在授权/授权完成的sdk名称 * authType 当前正在授权/授权完成的授权方式 * authStatus 授权状态 authorize_isAuthorizeLoginSuccess * isWaitAuth 是否正在授权 authorize_isWaitAuthorizeLogin * uuid 用于绑定游戏账号的uuid * nickname 昵称 * headUrl 头像地址 */ getAuthInfo (sdkName) { return { sdkName: 'Web授权', authType: JMC.AUTHORIZE_TYPE.NORMAL, authStatus: JMC.AUTH_STATUS.LOGIN_SUCCESS, isWaitAuth: false, loginType: JMC.LOGIN_TYPE.NORMAL, uuid: 'openboxh5_' + G.MiddleDevice.getUDID(), nickname: undefined, headUrl: undefined }; }, /** * 是否支持获取实名信息 authorize_isSupportCertification * * @returns {Boolean} */ isSupportRealName () { return false; }, /** * 获取游戏实名信息(异步回调 auth_real_name_info) authorize_getCertificationInfo * */ requestRealNameInfo () { G.MiddleMgr.handleEvent({ module: 'auth', eventKey: 'auth_real_name_info', code: 500, errorMsg: '不支持实名认证' }); }, /** * 是否支持打开实名认证弹框 authorize_isSupportOpenCertification * * @author Pyden * @date 2020-03-11 * @returns {Boolean} */ isSupportOpenRealNameAlert () { return false; }, /** * 打开实名认证弹框 authorize_openCertificationIntent * * @author Pyden * @date 2020-03-11 * @returns {Boolean} 返回值表示是否支持打开实名认证弹框 */ openRealNameAlert () { return false; }, /** * 展示SDK的退出弹框 authorize_showExit * * @author Pyden * @date 2020-03-11 * @returns {Boolean} 返回值表示是否在SDK展示了退出弹框 */ showExitAlert () { return false; }, /** * 调用SDK的退出逻辑 authorize_exit * * @author Pyden * @date 2020-03-11 * @returns {Boolean} 返回值表示是否在SDK退出了游戏 */ exitGame () { return false; }, /** * 是否从游戏中心启动 authorize_isLaunchFromCenter * * @author Pyden * @date 2020-03-11 * @returns {Boolean} */ isLaunchFromCenter () { return false; }, /** * 打开游戏中心 authorize_openGameCenter * * @author Pyden * @date 2020-03-11 * @returns {Boolean} 返回值表示是否支持打开游戏中心 */ openGameCenter () { return false; }, /** * 跳转社区 authorize_goToSocialCenter * * @author Pyden * @date 2020-03-11 * @returns {Boolean} 返回值表示是否支持跳转社区 */ openSocialCenter () { return false; }, /** * 玩家信息上报 authorize_setPlayerMoreInfo * * @author Pyden * @date 2020-03-11 * @param {Object} playerInfo * playerInfo.uid * playerInfo.level * playerInfo.nickname */ uploadPlayerInfo (playerInfo) { }, /** * 玩家开局上报 reportGameStart * * @author Pyden * @date 2020-03-11 * @param {Object} playerInfo * playerInfo.uid * playerInfo.level * playerInfo.nickname */ uploadGameStart (playerInfo) { } });