server-auth.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { serverLoginApi } from "../../../api/auth.api";
  2. import DnSdk from "../../../lib/DnSdk.js";
  3. import UserInfoModel, { UserInfoInterface } from "../../../store/models/user.model";
  4. import { silentLogin } from "../wechat/wechat-auth";
  5. import { to } from "../../../utils/helper";
  6. import URLQueryModel from "../../../store/models/urlQuery.model";
  7. /**
  8. * 服务端登录
  9. * @param wxloginInfo 微信登录信息
  10. * @returns Promise
  11. */
  12. export const serverLogin = (wxloginInfo) => {
  13. return new Promise(async (resolve, reject) => {
  14. // 获取链接上的参数
  15. const urlQuery = URLQueryModel.getInstance().get()
  16. let params = {
  17. channel: "wxxyx",
  18. code: wxloginInfo.code,
  19. gdt_vid: urlQuery.gdt_vid,
  20. weixinadinfo: urlQuery.weixinadinfo,
  21. };
  22. const serverLoginRes: UserInfoInterface = await serverLoginApi(params)
  23. //用户态存缓存下次进游戏可以直接拿
  24. UserInfoModel.getInstance().save(serverLoginRes);
  25. // 弹框公告
  26. if (serverLoginRes.pop_content) {
  27. wx.showModal({
  28. title: serverLoginRes.pop_title ? serverLoginRes.pop_title : "登录提示",
  29. content: serverLoginRes.pop_content,
  30. complete(res) {
  31. console.log(res);
  32. },
  33. });
  34. }
  35. // 腾讯广告小游戏SDK设置openid
  36. const dSdk = DnSdk.getInstance();
  37. dSdk.setOpenId(serverLoginRes.openid);
  38. if (serverLoginRes.is_first_login) {
  39. // 是否新用户
  40. dSdk.onRegister();
  41. } else if (serverLoginRes.is_reactive_user) {
  42. // 是否回归用户
  43. dSdk.track("RE_ACTIVE");
  44. }
  45. resolve(serverLoginRes);
  46. });
  47. };
  48. /**
  49. * @description: 重新登录
  50. * @return {*}
  51. */
  52. export const relogin = async () => {
  53. let err, res;
  54. //静默授权
  55. [err, res] = await to(silentLogin());
  56. if (err) {
  57. return Promise.reject(err);
  58. }
  59. [err, res] = await to(serverLogin(res));
  60. if (err) {
  61. return Promise.reject(err);
  62. }
  63. return Promise.resolve();
  64. };