import { serverLoginApi } from "../../../api/auth.api"; import DnSdk from "../../../lib/DnSdk.js"; import UserInfoModel, { UserInfoInterface } from "../../../store/models/user.model"; import { silentLogin } from "../wechat/wechat-auth"; import { to } from "../../../utils/helper"; import URLQueryModel from "../../../store/models/urlQuery.model"; /** * 服务端登录 * @param wxloginInfo 微信登录信息 * @returns Promise */ export const serverLogin = (wxloginInfo) => { return new Promise(async (resolve, reject) => { // 获取链接上的参数 const urlQuery = URLQueryModel.getInstance().get() let params = { channel: "wxxyx", code: wxloginInfo.code, gdt_vid: urlQuery.gdt_vid, weixinadinfo: urlQuery.weixinadinfo, }; const serverLoginRes: UserInfoInterface = await serverLoginApi(params) //用户态存缓存下次进游戏可以直接拿 UserInfoModel.getInstance().save(serverLoginRes); // 弹框公告 if (serverLoginRes.pop_content) { wx.showModal({ title: serverLoginRes.pop_title ? serverLoginRes.pop_title : "登录提示", content: serverLoginRes.pop_content, complete(res) { console.log(res); }, }); } // 腾讯广告小游戏SDK设置openid const dSdk = DnSdk.getInstance(); dSdk.setOpenId(serverLoginRes.openid); if (serverLoginRes.is_first_login) { // 是否新用户 dSdk.onRegister(); } else if (serverLoginRes.is_reactive_user) { // 是否回归用户 dSdk.track("RE_ACTIVE"); } resolve(serverLoginRes); }); }; /** * @description: 重新登录 * @return {*} */ export const relogin = async () => { let err, res; //静默授权 [err, res] = await to(silentLogin()); if (err) { return Promise.reject(err); } [err, res] = await to(serverLogin(res)); if (err) { return Promise.reject(err); } return Promise.resolve(); };