MiddleAuth.js 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. cc.Class({
  2. /**
  3. * 收到JNI发上来的事件
  4. *
  5. * @param {Object} eventData
  6. */
  7. handleEvent (eventData) {
  8. /* eventData参数:
  9. * @param {String} sdkName
  10. * @param {String} eventKey
  11. * @param {Integer} code
  12. * @param {String} errorMsg
  13. * @param {Object} data
  14. */
  15. /*
  16. 授权回调事件,eventKey如下:
  17. auth_login_result // SDK授权完成
  18. eventData.data // 授权信息
  19. auth_logout_result // SDK账号登出
  20. eventData.data // 授权信息
  21. auth_change_account // SDK切换账号完成
  22. eventData.data // 授权信息
  23. auth_exit // 退出游戏
  24. 获取实名认证回调事件,eventKey如下:
  25. auth_real_name_info // 回调实名认证信息
  26. eventData.data.age {Integer} 年龄
  27. eventData.data.isAdult {Boolean} 是否成年
  28. eventData.data.isRealName {Boolean} 是否已实名
  29. eventData.data.isEndGame {Boolean} 是否结束游戏
  30. */
  31. let eventKey = eventData.eventKey;
  32. switch (eventKey) {
  33. case 'auth_login_result': {
  34. let authInfo = eventData.data;
  35. if (!authInfo) {
  36. authInfo = this.getAuthInfo(eventKey.sdkName);
  37. }
  38. cc.game.emit('e_middle_auth_login_result', eventData);
  39. break;
  40. }
  41. case 'auth_logout_result': {
  42. let authInfo = eventData.data;
  43. if (!authInfo) {
  44. authInfo = this.getAuthInfo(eventKey.sdkName);
  45. }
  46. cc.game.emit('e_middle_auth_logout_result', eventData);
  47. break;
  48. }
  49. case 'auth_change_account': {
  50. let authInfo = eventData.data;
  51. if (!authInfo) {
  52. authInfo = this.getAuthInfo(eventKey.sdkName);
  53. }
  54. cc.game.emit('e_middle_auth_change_account', eventData);
  55. break;
  56. }
  57. case 'auth_exit': {
  58. cc.game.end();
  59. break;
  60. }
  61. case 'auth_real_name_info': {
  62. cc.game.emit('e_middle_auth_real_name_info', eventData);
  63. break;
  64. }
  65. default:
  66. break;
  67. }
  68. },
  69. /**
  70. * 获取授权模块的配置信息
  71. *
  72. * @author Pyden
  73. * @date 2020-03-23
  74. * @returns {Object}
  75. * config.list 授权类型信息列表
  76. */
  77. getConfig () {
  78. if (!this._config) {
  79. let gameConfig = G.MiddleMgr.getGameConfig();
  80. if (gameConfig && gameConfig.auth) {
  81. this._config = gameConfig.auth;
  82. }
  83. }
  84. return this._config;
  85. },
  86. /**
  87. * 获取SDK授权信息列表 authorize_authorizeTypeList
  88. *
  89. * @author Pyden
  90. * @date 2020-03-11
  91. * @returns {Array}
  92. * sdkName
  93. * authType {JMC.AUTHORIZE_TYPE}
  94. */
  95. getAuthTypeInfoList () {
  96. let config = this.getConfig() || {};
  97. return config.list;
  98. },
  99. /**
  100. * 获取当前授权信息
  101. * 注意:收到授权成功信息事件后,需要更新授权信息
  102. *
  103. * @author Pyden
  104. * @date 2020-03-11
  105. * @returns {Object}
  106. * sdkName 当前正在授权/授权完成的sdk名称
  107. * authType 当前正在授权/授权完成的授权方式
  108. * authStatus {JMC.AUTH_STATUS} 授权状态 authorize_isAuthorizeLoginSuccess
  109. * isWaitAuth 是否正在授权 authorize_isWaitAuthorizeLogin
  110. * uuid 用于绑定游戏账号的uuid
  111. * nickname 昵称
  112. * headUrl 头像地址
  113. */
  114. getCurrentAuthInfo () {
  115. if (!this._currentAuthInfo) {
  116. // 优先取授权成功的,没有授权成功的话,就选第一个
  117. let authTypeInfoList = this.getAuthTypeInfoList();
  118. let ret;
  119. for (const v of authTypeInfoList) {
  120. let info = this.getAuthInfo(v.sdkName);
  121. if (!ret) {
  122. ret = info;
  123. } else {
  124. if (info.authStatus == JMC.AUTH_STATUS.LOGIN_SUCCESS) {
  125. ret = info;
  126. break;
  127. }
  128. }
  129. }
  130. this._currentAuthInfo = ret;
  131. }
  132. return this._currentAuthInfo;
  133. },
  134. /**
  135. * 获取绑定账号的唯一标识
  136. *
  137. * @author Pyden
  138. * @date 2020-03-23
  139. * @returns {String}
  140. */
  141. getUUID () {
  142. let authInfo = this.getCurrentAuthInfo() || {};
  143. return authInfo.uuid;
  144. },
  145. /**
  146. * SDK授权登录 authorize_loginWithType
  147. *
  148. * @param {String} sdkName
  149. * @param {Integer} authType
  150. */
  151. login (sdkName, authType) {
  152. G.MiddleMgr.handleEvent({
  153. module: 'auth',
  154. eventKey: 'auth_login_result',
  155. code: 200,
  156. data: {
  157. sdkName: 'Web',
  158. authType: authType,
  159. authStatus: JMC.AUTH_STATUS.LOGIN_SUCCESS,
  160. isWaitAuth: false,
  161. loginType: JMC.LOGIN_TYPE.NORMAL,
  162. uuid: 'openboxh5_' + G.MiddleDevice.getUDID(),
  163. }
  164. });
  165. },
  166. /**
  167. * SDK切换账号 authorize_changeLoginWay authorize_showLogin
  168. *
  169. * @param {String} sdkName
  170. * @returns {Boolean} 返回值表示是否回到授权界面重新授权
  171. */
  172. logout (sdkName) {
  173. return false;
  174. },
  175. /**
  176. * 获取授权信息
  177. *
  178. * @author Pyden
  179. * @date 2020-03-23
  180. * @param {String} sdkName
  181. * @returns
  182. * sdkName 当前正在授权/授权完成的sdk名称
  183. * authType 当前正在授权/授权完成的授权方式
  184. * authStatus 授权状态 authorize_isAuthorizeLoginSuccess
  185. * isWaitAuth 是否正在授权 authorize_isWaitAuthorizeLogin
  186. * uuid 用于绑定游戏账号的uuid
  187. * nickname 昵称
  188. * headUrl 头像地址
  189. */
  190. getAuthInfo (sdkName) {
  191. return {
  192. sdkName: 'Web授权',
  193. authType: JMC.AUTHORIZE_TYPE.NORMAL,
  194. authStatus: JMC.AUTH_STATUS.LOGIN_SUCCESS,
  195. isWaitAuth: false,
  196. loginType: JMC.LOGIN_TYPE.NORMAL,
  197. uuid: 'openboxh5_' + G.MiddleDevice.getUDID(),
  198. nickname: undefined,
  199. headUrl: undefined
  200. };
  201. },
  202. /**
  203. * 是否支持获取实名信息 authorize_isSupportCertification
  204. *
  205. * @returns {Boolean}
  206. */
  207. isSupportRealName () {
  208. return false;
  209. },
  210. /**
  211. * 获取游戏实名信息(异步回调 auth_real_name_info) authorize_getCertificationInfo
  212. *
  213. */
  214. requestRealNameInfo () {
  215. G.MiddleMgr.handleEvent({
  216. module: 'auth',
  217. eventKey: 'auth_real_name_info',
  218. code: 500,
  219. errorMsg: '不支持实名认证'
  220. });
  221. },
  222. /**
  223. * 是否支持打开实名认证弹框 authorize_isSupportOpenCertification
  224. *
  225. * @author Pyden
  226. * @date 2020-03-11
  227. * @returns {Boolean}
  228. */
  229. isSupportOpenRealNameAlert () {
  230. return false;
  231. },
  232. /**
  233. * 打开实名认证弹框 authorize_openCertificationIntent
  234. *
  235. * @author Pyden
  236. * @date 2020-03-11
  237. * @returns {Boolean} 返回值表示是否支持打开实名认证弹框
  238. */
  239. openRealNameAlert () {
  240. return false;
  241. },
  242. /**
  243. * 展示SDK的退出弹框 authorize_showExit
  244. *
  245. * @author Pyden
  246. * @date 2020-03-11
  247. * @returns {Boolean} 返回值表示是否在SDK展示了退出弹框
  248. */
  249. showExitAlert () {
  250. return false;
  251. },
  252. /**
  253. * 调用SDK的退出逻辑 authorize_exit
  254. *
  255. * @author Pyden
  256. * @date 2020-03-11
  257. * @returns {Boolean} 返回值表示是否在SDK退出了游戏
  258. */
  259. exitGame () {
  260. return false;
  261. },
  262. /**
  263. * 是否从游戏中心启动 authorize_isLaunchFromCenter
  264. *
  265. * @author Pyden
  266. * @date 2020-03-11
  267. * @returns {Boolean}
  268. */
  269. isLaunchFromCenter () {
  270. return false;
  271. },
  272. /**
  273. * 打开游戏中心 authorize_openGameCenter
  274. *
  275. * @author Pyden
  276. * @date 2020-03-11
  277. * @returns {Boolean} 返回值表示是否支持打开游戏中心
  278. */
  279. openGameCenter () {
  280. return false;
  281. },
  282. /**
  283. * 跳转社区 authorize_goToSocialCenter
  284. *
  285. * @author Pyden
  286. * @date 2020-03-11
  287. * @returns {Boolean} 返回值表示是否支持跳转社区
  288. */
  289. openSocialCenter () {
  290. return false;
  291. },
  292. /**
  293. * 玩家信息上报 authorize_setPlayerMoreInfo
  294. *
  295. * @author Pyden
  296. * @date 2020-03-11
  297. * @param {Object} playerInfo
  298. * playerInfo.uid
  299. * playerInfo.level
  300. * playerInfo.nickname
  301. */
  302. uploadPlayerInfo (playerInfo) {
  303. },
  304. /**
  305. * 玩家开局上报 reportGameStart
  306. *
  307. * @author Pyden
  308. * @date 2020-03-11
  309. * @param {Object} playerInfo
  310. * playerInfo.uid
  311. * playerInfo.level
  312. * playerInfo.nickname
  313. */
  314. uploadGameStart (playerInfo) {
  315. }
  316. });