UNPKG

react-app-shell

Version:

react打包脚本和example, 这里的版本请忽略

112 lines (100 loc) 3.14 kB
import { fetchUtils, tools, localStore } from '../utils'; import { appConfig } from '../config'; import { AccountsType } from '../constants'; const { mobileDomain, baseDomain } = appConfig.domain; // 落地时的 路径+查询参数, 为了解决IOS SPA 分享bug const entryUrl = window.location.href; /** * 根据当前URL的路径和参数, 获取微信签名 * @returns {*|Promise<T>} */ export const getWechatSignature = (account = 'MAIN') => { const url = baseDomain.concat('/wechat/mp/jsapi/signature'); const data = { account, /** * !!! url参数必须传递当前页面的完整url */ url: tools.isIOS() ? entryUrl : window.location.href }; return fetchUtils.get(url, data).then((res) => res.data); }; /** * 根据用户主动授权的code, 获取openId 和 微信token * 接口的响应 会给浏览器添加一个cookie, "wxToken" * @param code * @returns {*|Promise<any>} */ export const getOpenIdByCode = (code) => { const url = mobileDomain.concat('/wx/asyncOauth2'); const data = { code }; return fetchUtils.get(url, data, { includeToken: false, successCode: 0 }); }; /** * 根据用户主动授权的code和account, 获取openId 和 微信token * @param code * @param account * @returns {*|Promise<any>} */ export const getOpenIdByCodeAndAccount = (code, account) => { let url; let data = { code }; let type; switch (account) { // account 为BONNY时,需要单独将wxToken写入cookie case AccountsType.MAIN: url = mobileDomain.concat('/wx/asyncOauth2'); break; case AccountsType.ACTIVITY: url = mobileDomain.concat('/wx99/asyncOauth2'); break; case AccountsType.BONNY: // account 为BONNY-魔小兔,则调用新的微信授权接口 url = baseDomain.concat('/wechat/mp/oauth2'); data = { code, account }; // 调用新的微信授权接口 type = 'newType'; break; default: url = mobileDomain.concat('/wx/asyncOauth2'); break; } // account 为BONNY时,调用新接口,并将wxToken写入cookie if (type === 'newType') return fetchUtils.get(url, data).then((res) => { const { wechatTokenKey } = appConfig.cookie; const { wxMpUser, encryptWxToken } = res.data; // 将wxToken写入cookie localStore.set(wechatTokenKey, encryptWxToken); return { code: res.code, openId: wxMpUser.openId, nickname: wxMpUser.nickname }; }); if (account === AccountsType.MAIN) { // 接口返回的数据 不是标准数据格式, 没有code编码, 只有一层数据 return fetchUtils.get(url, data, { includeToken: false, jumpSuccessCode: true }); } else { return fetchUtils.get(url, data, { includeToken: false, successCode: 0 }); } }; /** * 检查用户是否关注过公众号 * @param account * @returns {self|Promise<T | never>} */ export const checkWxSubscribe = (account) => { const url = baseDomain.concat('/usercenter/wx/check/subscribe'); const data = { account }; return fetchUtils.get(url, data).then((res) => res.data); };