loginService.js 1.68 KB
import BaseService from '../services/baseService.js';

const WECHAT_SMALLPROGRAM_ONLOGIN = 'wechat.smallProgram.onLogin';
const WECHAT_SMALLPROGRAM_DECODEUSERINFO = 'wechat.smallProgram.decodeUserInfo';
const WECHAT_ADDUNIONUPDUSER = 'app.wechat.addUnionUpdUser';
const WECHAT_PASSPORT_SIGNINBYOPENID = 'app.passport.signinByOpenID';

const WechatPath = '/wechat';

export class LoginService extends BaseService {
  async checkLogin(code) {
    return await this.GET({
      method: WECHAT_SMALLPROGRAM_ONLOGIN,
      jsCode: code,
      miniapp_type: '0' // 暂时为 0 
    }, {
      path: WechatPath
    }).then((data) => {
      return data;
    }).catch((error) => {
      throw error;
    })
  }

  async getUnionID(srdSession, encryptedData, iv) {
    return await this.GET({
      method: WECHAT_SMALLPROGRAM_DECODEUSERINFO,
      srdSession,
      encryptedData,
      iv
    }, {
      path: WechatPath
    }).then((data) => {
      return data;
    }).catch((error) => {
      throw error;
    });
  }

  async sendWeChatUserDataWithUnionId(unionId, nickname, avatarUrl) {
    if (!unionId || !nickname || !avatarUrl || avatarUrl === "images/mine_default_head.png") throw new Error('请检查 unionId 或用户信息是否有误');
    return await this.GET({
      method: WECHAT_ADDUNIONUPDUSER,
      unionId,
      headIco: avatarUrl,
      nickname
    }).then(data => {
      return data;
    }).catch(error => {
      throw error;
    })
  }

  async wechatUserIsBind(unionId, nickname) {
    return await this.GET({
      method: WECHAT_PASSPORT_SIGNINBYOPENID,
      openId: unionId,
      nickname
    }).then(data => {
      return data
    }).catch(error => {
      throw error;
    });
  }
}