// Learn cc.Class: // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/class.html // - [English] http://www.cocos2d-x.org/docs/creator/en/scripting/class.html // Learn Attribute: // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html // - [English] http://www.cocos2d-x.org/docs/creator/en/scripting/reference/attributes.html // Learn life-cycle callbacks: // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html // - [English] http://www.cocos2d-x.org/docs/creator/en/scripting/life-cycle-callbacks.html //var httpclient = require("httpclient"); //var urlbuilder = require("urlbuilder"); var httpclient = require("httpclient"); var urlbuilder = require("urlbuilder"); const BaseNet = require("../../BaseNet"); const Config = require("../../Config"); const { isTesting } = require("../../Config"); const { WhitelistTip } = require("../../tips/WhitelistTip"); const { uimanger } = require("../../UI/UIManger"); module.exports = { // LIFE-CYCLE CALLBACKS: // onLoad () {}, //start () {}, // update (dt) {}, __login( channelid, gameid, tokencode, isoffical, successcb, failcb, openid ) { if (window.canAutoLogin == true) { this.autoLogin( localStorage.getItem("loginaccount"), localStorage.getItem("loginsession"), (res) => { console.log("auto login res===" + res); var obj = httpclient.JSON_parse(res); // console.log("[__login]success!" + JSON.stringify(obj)); successcb && successcb(obj); cc.Notifier.emit("autologinsuccess"); } ); return; } console.log(BaseNet.getNormalApiUrl("login")); this.urlbd.clear(); this.urlbd .addKV("c", "Login") .addKV("a", "auth") .addKV("gameid", gameid); if (cc.appPlatformID) { channelid = cc.appPlatformID; console.log("PlatformID==", channelid); } this.urlbd.addKV("channel", channelid); if (cc.sdkdata) { this.urlbd.addKV("openid", cc.sdkdata.openid); // this.urlbd.addKV('token', cc.sdkdata.token); this.urlbd.addKV("poly_sdk_channel", 8001); this.urlbd.addKV( "poly_sdk_subchannel", cc.sdkdata.poly_sdk_subchannel ); } else if (cc.sdkData2) { console.log("SDKData3==", JSON.stringify(cc.sdkData2)); this.urlbd.addKV("openid", cc.sdkData2.openid); // this.urlbd.addKV('token', cc.sdkData2.token); } else { if (openid && openid != "") { this.urlbd.addKV("openid", openid); } else { this.urlbd.addKV("openid", tokencode); } this.urlbd.addKV("token", tokencode); } if (this.env) { this.urlbd.addKV("env", this.env); } if (channelid == "6516") { this.urlbd.addKV("account", window.account); this.urlbd.addKV("net_id", "321"); // getNounce this.urlbd.addKV("nonce", window.nonce); this.urlbd.addKV("signature", window.appsign); this.urlbd.addKV("tips", "sign request"); // reset token var tmpToken = ""; if (cc.sdkdata) { tmpToken = cc.sdkdata.token; } else if (cc.sdkData2) { tmpToken = cc.sdkData2.token; } var token = {}; token = { token: tmpToken, account: window.account, tips: "sign request", nonce: window.nonce, signature: window.appsign, net_id: 321, }; this.urlbd.addKV("type", 0); // if (cc.sys.os == cc.sys.OS_ANDROID) { // token = { // act: 'login', // account: window.account, // chainid: 321, // token: window.appsign, // nonce: window.nonce, // }; // this.urlbd.addKV('type', 1); // } else if (cc.sys.os == cc.sys.OS_IOS) { // token = { // token: tmpToken, // account: window.account, // tips: 'sign request', // nonce: window.nonce, // signature: window.appsign, // net_id: 321, // }; // this.urlbd.addKV('type', 0); // } console.log(`TOKEN --- ${JSON.stringify(token)}`); this.urlbd.addKV("token", JSON.stringify(token)); } else { if (cc.sdkdata) { this.urlbd.addKV("token", cc.sdkdata.token); } else if (cc.sdkData2) { this.urlbd.addKV("token", cc.sdkData2.token); } } httpclient.httpGet( this.urlbd.baseurl, function (restext) { var obj = httpclient.JSON_parse(restext); console.log(`login res --${restext}`); console.log("errcode----" + obj.errcode); if (obj.errcode == 66) { console.log("用户不在白名单中"); uimanger.showUI(WhitelistTip.prefabPath); localStorage.removeItem("walletaccount"); window.hasWallet = false; return; } if (obj.errcode == 0) { console.log("[__login]success!" + JSON.stringify(obj)); cc.subchannel = obj.channel; successcb && successcb(obj); } else { console.log( "[__login]failed!" + obj.errcode + ":" + obj.errmsg ); failcb && failcb(0, obj.errcode, obj.errmsg); } }, function (errcode, errmsg) { console.log("[__login]failed!" + errcode + ":" + errmsg); failcb && failcb(errcode, 0, errmsg); } ); }, __activeWX( gameid, accountid, sessionid, raw, sign, encyptdata, iv, successcb, failcb ) { this.urlbd.clear(); this.urlbd .addKV("c", "Login") .addKV("a", "activateWeiXinUser") .addKV("gameid", gameid) .addKV("account_id", accountid) .addKV("session_id", sessionid) .addKV("rawdata", raw) .addKV("signature", sign) .addKV("encrypted_data", encyptdata) .addKV("iv", iv); httpclient.httpGet( this.urlbd.baseurl, function (restext) { if (restext == "") { failcb && failcb(0, -1, "restext is nullstring!"); return; } var obj = httpclient.JSON_parse(restext); if (obj && obj.errcode == 0) { console.log("[__activeWX]success!" + JSON.stringify(obj)); successcb && successcb(obj); } else { console.log( "[__activeWX]failed!" + obj.errcode + ":" + obj.errmsg ); failcb && failcb(0, obj.errcode, obj.errmsg); } }, function (errcode, errmsg) { console.log("[__activeWX]failed!" + errcode + ":" + errmsg); failcb && failcb(errcode, 0, errmsg); } ); }, __updateInfo(accountid, sessionid, usrinfo, successcb, failcb) { this.urlbd.clear(); this.urlbd .addKV("c", "Login") .addKV("a", "updateUserInfo") .addKV("account_id", accountid) .addKV("session_id", sessionid) .addKV("nickname", usrinfo.nickname) .addKV("city", usrinfo.city) .addKV("province", usrinfo.province) .addKV("avatar_url", usrinfo.avatar_url) .addKV("country", usrinfo.country) .addKV("sex", usrinfo.sex) .addKV("birthday", usrinfo.birthday) .addKV("phone", usrinfo.phone) .addKV("location", usrinfo.location); // if(!this.isoffical){ // console.log(this.urlbd.baseurl); // } httpclient.httpGet( this.urlbd.baseurl, function (restext) { var obj = httpclient.JSON_parse(restext); if (obj.errcode == 0) { console.log("[__updateInfo]success!" + JSON.stringify(obj)); successcb && successcb(obj); } else { console.log( "[__updateInfo]failed!" + obj.errcode + ":" + obj.errmsg ); failcb && failcb(0, obj.errcode, obj.errmsg); } }, function (errcode, errmsg) { console.log("[__updateInfo]failed!" + errcode + ":" + errmsg); failcb && failcb(errcode, 0, errmsg); } ); }, __generalSignature(accountid, sessionid, signdata, successcb, failcb) { this.urlbd.clear(); this.urlbd .addKV("c", "Login") .addKV("a", "signature") .addKV("account_id", accountid) .addKV("session_id", sessionid) .addKV("params", signdata); httpclient.httpGet( this.urlbd.baseurl, function (restext) { var obj = httpclient.JSON_parse(restext); if (obj.errcode == 0) { console.log( "[__generalSignature]success!" + JSON.stringify(obj) ); successcb && successcb(obj); } else { console.log( "[__generalSignature]failed!" + obj.errcode + ":" + obj.errmsg ); failcb && failcb(0, obj.errcode, obj.errmsg); } }, function (errcode, errmsg) { console.log( "[__generalSignature]failed!" + errcode + ":" + errmsg ); failcb && failcb(errcode, 0, errmsg); } ); }, __generalToken(accountid, sessionid, sceneid, successcb, failcb) { this.urlbd.clear(); this.urlbd .addKV("c", "Login") .addKV("a", "getAccessToken") .addKV("account_id", accountid) .addKV("session_id", sessionid) .addKV("scene", sceneid); httpclient.httpGet( this.urlbd.baseurl, function (restext) { var obj = httpclient.JSON_parse(restext); if (obj.errcode == 0) { console.log( "[__generalToken]success!" + JSON.stringify(obj) ); successcb && successcb(obj); } else { console.log( "[__generalToken]failed!" + obj.errcode + ":" + obj.errmsg ); failcb && failcb(0, obj.errcode, obj.errmsg); } }, function (errcode, errmsg) { console.log("[__generalToken]failed!" + errcode + ":" + errmsg); failcb && failcb(errcode, 0, errmsg); } ); }, __getAnnouncement(channelid, gameid, successcb, failcb) { this.urlbd.clear(); this.urlbd .addKV("c", "Annc") .addKV("a", "getAnnouncement") .addKV("gameid", gameid) .addKV("channel", channelid); httpclient.httpGet( this.urlbd.baseurl, function (restext) { var obj = httpclient.JSON_parse(restext); if (obj.errcode == 0) { console.log( "[__getAnnouncement]success!" + JSON.stringify(obj) ); successcb && successcb(obj); } else { console.log( "[__getAnnouncement]failed!" + obj.errcode + ":" + obj.errmsg ); failcb && failcb(0, obj.errcode, obj.errmsg); } }, function (errcode, errmsg) { console.log( "[__getAnnouncement]failed!" + errcode + ":" + errmsg ); failcb && failcb(errcode, 0, errmsg); } ); }, __getServerList(channelid, gameid, successcb, failcb) { this.urlbd.clear(); this.urlbd .addKV("c", "SrvList") .addKV("a", "getSrvList") .addKV("gameid", gameid) .addKV("channel", channelid); if (this.env) { this.urlbd.addKV("env", this.env); } httpclient.httpGet( this.urlbd.baseurl, function (restext) { var obj = httpclient.JSON_parse(restext); if (obj.errcode == 0) { console.log( "[__getServerList]success!" + JSON.stringify(obj) ); successcb && successcb(obj.server_list); } else { console.log( "[__getServerList]failed!" + obj.errcode + ":" + obj.errmsg ); failcb && failcb(0, obj.errcode, obj.errmsg); } }, function (errcode, errmsg) { console.log( "[__getServerList]failed!" + errcode + ":" + errmsg ); failcb && failcb(errcode, 0, errmsg); } ); }, __loginYoume(accountid, sessionid, nickname, successcb, failcb) { this.urlbd.clear(); this.urlbd .addKV("c", "YouMe") .addKV("a", "login") .addKV("account_id", accountid) .addKV("session_id", sessionid) .addKV("nickname", nickname); httpclient.httpGet( this.urlbd.baseurl, function (restext) { var obj = httpclient.JSON_parse(restext); if (obj.errcode == 0) { console.log("[__loginYoume]success!" + JSON.stringify(obj)); successcb && successcb(obj.token); } else { console.log( "[__loginYoume]failed!" + obj.errcode + ":" + obj.errmsg ); failcb && failcb(0, obj.errcode, obj.errmsg); } }, function (errcode, errmsg) { console.log("[__loginYoume]failed!" + errcode + ":" + errmsg); failcb && failcb(errcode, 0, errmsg); } ); }, _checkUserInfo() { if (this._localinfoloaded && this._svinfoloaded) { if (this.channelid == 6001) { if (!this.actived) { this.activewx( this.userinfo, this._activesuccess, this._activefail ); } else { if (this._combineInfo(this.svuserinfo, this.userinfo)) { this.updateinfo( this.svuserinfo, this._activesuccess, this._activefail ); } else { this._activesuccess && this._activesuccess(this.userinfo); } // this._activefail && this._activefail(0, -1, 'is not weixin platform!'); } } else { if (this._combineInfo(this.svuserinfo, this.userinfo)) { this.updateinfo( this.svuserinfo, this._activesuccess, this._activefail ); } else { this._activesuccess && this._activesuccess(this.userinfo); } } } }, _checkNickName() { if (this.userinfo.nickname) { this.owner && this.owner.setNickName(this.userinfo.nickname); } }, _loadLocalInfo(info) { if (!this.userinfo) { this.userinfo = {}; } switch (this.channelid) { case 6001: { this.userinfo.nickname = info.nickName; this.userinfo.country = info.country; this.userinfo.province = info.province; this.userinfo.city = info.city; this.userinfo.avatar_url = info.avatarUrl; this.userinfo.sex = info.gender; } break; case 6002: { } break; case 6003: { this.userinfo.nickname = info.nickName; this.userinfo.avatar_url = info.avatar; this.userinfo.sex = info.sex; this.userinfo.birthday = info.birthday; this.userinfo.phone = info.phoneNum; this.userinfo.location = info.location; } break; case 6004: { this.userinfo.nickname = info.nickname; this.userinfo.avatar_url = info.avatar; this.userinfo.unionid = info.unionid; //todo: } break; } console.log("[_loadLocalInfo]finish"); this._localinfoloaded = true; }, _loadTokenInfo(tokeninfo) { if (!this.userinfo) { this.userinfo = {}; } if (tokeninfo && tokeninfo.rawData) { this.userinfo.rawData = tokeninfo.rawData; this.userinfo.signature = tokeninfo.signature; this.userinfo.encryptedData = tokeninfo.encryptedData; this.userinfo.iv = tokeninfo.iv; } this._localtokenloaded = true; }, _loadServerInfo(info) { if (!this.svuserinfo) { this.svuserinfo = {}; } this.svuserinfo.nickname = info.nickname; this.svuserinfo.country = info.country; this.svuserinfo.province = info.province; this.svuserinfo.city = info.city; this.svuserinfo.avatar_url = info.avatar_url; this.svuserinfo.sex = info.sex; this.svuserinfo.birthday = info.birthday; this.svuserinfo.phone = info.phone; this.svuserinfo.location = info.location; console.log("[_loadServerInfo]finish"); this._svinfoloaded = true; }, _combineInfo(svinfo, lcinfo) { let bupdated = false; if (lcinfo.nickname && svinfo.nickname != lcinfo.nickname) { console.log("[nickname]" + svinfo.nickName + "|" + lcinfo.nickname); svinfo.nickname = lcinfo.nickname; bupdated = true; } if (lcinfo.city && svinfo.city != lcinfo.city) { console.log("[city]" + svinfo.city + "|" + lcinfo.city); svinfo.city = lcinfo.city; bupdated = true; } if (lcinfo.province && svinfo.province != lcinfo.province) { console.log("[province]" + svinfo.province + "|" + lcinfo.province); svinfo.province = lcinfo.province; bupdated = true; } if (lcinfo.country && svinfo.country != lcinfo.country) { console.log("[country]" + svinfo.country + "|" + lcinfo.country); svinfo.country = lcinfo.country; bupdated = true; } if (lcinfo.avatar_url && svinfo.avatar_url != lcinfo.avatar_url) { console.log( "[avatar_url]" + svinfo.avatar_url + "|" + lcinfo.avatar_url ); svinfo.avatar_url = lcinfo.avatar_url; bupdated = true; } if (lcinfo.sex && svinfo.sex != lcinfo.sex) { console.log("[sex]" + svinfo.sex + "|" + lcinfo.sex); svinfo.sex = lcinfo.sex; bupdated = true; } if (lcinfo.birthday && svinfo.birthday != lcinfo.birthday) { console.log("[birthday]" + svinfo.birthday + "|" + lcinfo.birthday); svinfo.birthday = lcinfo.birthday; bupdated = true; } if (lcinfo.phone && svinfo.phone != lcinfo.phone) { console.log("[phone]" + svinfo.phone + "|" + lcinfo.phone); svinfo.phone = lcinfo.phone; bupdated = true; } if (lcinfo.location && svinfo.location != lcinfo.location) { console.log("[location]" + svinfo.location + "|" + lcinfo.location); svinfo.location = lcinfo.location; bupdated = true; } return bupdated; }, init(channelid, gameid, isoffical, owner, env) { this.owner = owner; this.channelid = channelid; this.gameid = gameid; this.sessionid = this.sessionid ? this.sessionid : ""; this.accountid = this.accountid ? this.accountid : ""; this.openid = this.openid ? this.openid : ""; this.env = env; this.isoffical = isoffical; this.logined = this.logined ? this.logined : false; this.urlbd = new urlbuilder(BaseNet.getNormalApiUrl("login")); console.log( "[jclogin]init:" + gameid + "|" + channelid + "|" + isoffical ); }, login(token, successcb, failcb, openid) { var self = this; this.__login( this.channelid, this.gameid, token, this.isoffical, function (obj) { let nowtime = new Date().getTime(); self.sessionid = obj.session_id; self.accountid = obj.account_id; self.openid = obj.openid; self.actived = obj.activated == true; self.logined = true; self.login_costtime = nowtime - self._loginstarttime; self._loadServerInfo(obj); self._checkUserInfo(); successcb && successcb(obj); }, failcb, openid ); }, // 登陆平台 loginPT(successcb, failcb, exparam) { switch (this.channelid) { case 6511: case 6513: case 6516: case 6000: { this.login(this.localid, successcb, failcb); } break; case 6001: { this.loginwx(successcb, failcb); } break; case 6002: { // let self = this; let openId = BK.getSystemInfoSync().openId; console.log("loginQQ openid:" + openId); // BK.Script.loadlib("GameRes://qqPlayCore.js") //预加载bricks js层接口 BK.QQ.fetchOpenKey(function (errCode, cmd, data) { if (errCode == 0) { let openKey = data.openKey; console.log("loginQQ openKey:" + openKey); self.login(openKey, successcb, failcb, openId); } }); } break; case 6003: { console.log("[qg.login]BEGIN:" + exparam); if (typeof qg != "undefined") { qg.login({ pkgName: exparam, success: (res) => { console.log("[qg.login]success"); console.log(JSON.stringify(res)); this.login( res.token, successcb, failcb, res.uid ); this.updateuserinfo(res); }, fail: (res) => { console.log("[qg.login]fail"); console.log(JSON.stringify(res)); failcb && failcb(); }, }); } } break; case 6004: { var self = this; var vivoGetUserInfo = function (vivotoken) { qg.getProfile({ token: vivotoken, success: function (data) { console.log("[vivo.login]success"); self.login( vivotoken, successcb, failcb, data.openid ); self.updateuserinfo(data); }, fail: function (data, code) { console.log("[vivo.login]fail"); failcb && failcb(); }, }); }; qg.authorize({ type: "token", success: function (data) { console.log("vivoAuthorize success"); vivoGetUserInfo(data.accessToken); }, fail: function (data, code) { console.log("vivoAuthorize fail"); failcb && failcb(); }, }); } break; } }, // 更新用户信息 updatePTInfo(userinfo, tokeninfo, successcb, failcb) { this.updateuserinfo(userinfo, tokeninfo, successcb, failcb); }, // 登陆微信 loginwx(successcb, failcb) { // let wx = wx || {}; if (wx.login) { var self = this; this._loginstarttime = new Date().getTime(); wx.login({ success: function (res) { console.log("[wx]login success!" + res.code); self.login(res.code, successcb, failcb); }, fail: function (res) { console.log("[wx]login fail!"); failcb && failcb(0, res.errcode, res.errmsg); }, }); } else { failcb && failcb(-1, 0, "not weixin platform!"); } }, loginYoume(successcb, failcb) { this.__loginYoume( this.accountid, this.sessionid, this.nickname, successcb, failcb ); }, // 获取用户信息后调用此方法激活账号(info为空说明授权失败) updateuserinfo(userinfo, tokeninfo, successcb, failcb) { this._loadLocalInfo(userinfo); this._loadTokenInfo(tokeninfo); this._activesuccess = successcb; this._activefail = failcb; this._checkUserInfo(); this._checkNickName(); }, activewx(res, successcb, failcb) { var self = this; this.__activeWX( this.gameid, this.accountid, this.sessionid, res.rawData, res.signature, res.encryptedData, res.iv, function (obj) { self.actived = true; successcb && successcb(obj); }, failcb ); }, updateinfo(usrinfo, successcb, failcb) { this.__updateInfo( this.accountid, this.sessionid, usrinfo, successcb, failcb ); }, getToken(sceneid, successcb, failcb) { this.__generalToken( this.accountid, this.sessionid, sceneid, successcb, failcb ); }, getSignature(signdata, successcb, failcb) { this.__generalSignature( this.accountid, this.sessionid, signdata, successcb, failcb ); }, getAnnouncement(successcb, failcb) { this.__getAnnouncement(this.channelid, this.gameid, successcb, failcb); }, getServerList(successcb, failcb) { this.__getServerList(this.channelid, this.gameid, successcb, failcb); }, isActived() { return this.actived; }, AccountID(openid) { if (this.accountid && this.accountid != "") { return this.accountid; } return this.channelid + "_" + this.gameid + "_" + openid; }, setAccountID(accountid, sessionid) { this.accountid = accountid; this.sessionid = sessionid; }, setNickName(nickname) { this.nickname = nickname; }, setFromAppID(appid) { this.fromid = appid; }, setLocalUUID(uuid) { this.localid = uuid; }, setSystemInfo(info) {}, getNonce() { return new Promise((resolve, reject) => { this.urlbd.clear(); this.urlbd .addKV("c", "Login") .addKV("a", "getNonce") .addKV("gameid", this.gameid) .addKV("account", window.account); httpclient.httpGet( this.urlbd.baseurl, function (res) { window.nonce = httpclient.JSON_parse(res).nonce; if (cc.sys.os == cc.sys.OS_IOS) { jsb.reflection.callStaticMethod( "AppController", "signApp:", window.nonce ); } else if (cc.sys.os == cc.sys.OS_ANDROID) { var signData = { types: { EIP712Domain: [ { name: "name", type: "string" }, { name: "version", type: "string" }, ], set: [ { name: "tips", type: "string" }, { name: "nonce", type: "string" }, ], }, primaryType: "set", domain: { name: "Auth", version: "1" }, message: { tips: "sign request", nonce: window.nonce, }, }; jsb.reflection.callStaticMethod( "org/cocos2dx/javascript/AppActivity", "signApp", "(Ljava/lang/String;)V", JSON.stringify(signData) ); } resolve(window.nonce); }, function (errcode, errmsg) { console.log(`get nonce error--${errmsg}----${errcode}`); } ); }); }, autoLogin(accountid, sessionid, successcb) { this.urlbd.clear(); this.urlbd .addKV("c", "Login") .addKV("a", "sessionAuth") .addKV("account_id", accountid) .addKV("session_id", sessionid); console.log("auto...."); httpclient.httpGet( this.urlbd.baseurl, function (res) { console.log("login success"); successcb && successcb(res); }, function (errcode, errmsg) { console.log("login err" + errcode + errmsg); } ); }, getSwitch(cb) { const tmpUrlBd = new urlbuilder(BaseNet.getExaminingUrl()); tmpUrlBd .addKV("c", "ServerSwitch") .addKV("a", "getSwitch") .addKV("gameid", 2006); httpclient.httpGet( tmpUrlBd.baseurl, function (res) { var obj = httpclient.JSON_parse(res); if (obj.examining == "1") { Config.isTest = true; } else { Config.isTest = false; } cb(obj); }, function (errcode, errmsg) {} ); }, getVoipSign(group_id, successcb, failcb) { this.urlbd.clear(); this.urlbd .addKV("c", "Login") .addKV("a", "getVoipSign") .addKV("gameid", this.gameid) .addKV("account_id", this.accountid) .addKV("session_id", this.sessionid) .addKV("group_id", group_id); httpclient.httpGet( this.urlbd.baseurl, function (restext) { var obj = httpclient.JSON_parse(restext); if (obj.errcode == 0) { console.log("[getVoipSign]success!" + JSON.stringify(obj)); successcb && successcb(obj); } else { console.log( "[getVoipSign]failed!" + obj.errcode + ":" + obj.errmsg ); failcb && failcb(0, obj.errcode, obj.errmsg); } }, function (errcode, errmsg) { console.log("[getVoipSign]failed!" + errcode + ":" + errmsg); failcb && failcb(errcode, 0, errmsg); } ); }, };