甘肃分支

分支:1.2.0-RELEASE-GANSU

第三方登录

基本流程

1、获取第三方AppToken


// 甘肃获取第三方token  第一步
getApptokenByThirdParty({ commit, dispatch, state }, params) {
    let cookie = getCookie('TRUSTED_SESSIONID'); //setThirdPartyUserCookie 后会删除
    return new Promise((resolve, reject) => {
        this._vm.$http
            .post(user.getApptokenByThirdParty, params)
            .then(async (res) => {
                //1
                commit('setApptoken', res.data);
                await dispatch('setThirdPartyUserCookie', cookie); //删除cookit TRUSTED_SESSIONID放到session里
                await dispatch('getUserInfoByThirdParty');
                await dispatch('thirdPartyLogin', {
                    ...state.thirdPartyUserInfo.result,
                    appToken: state.apptoken.result.appToken,
                    userToken: state.thirdPartyUserCookie,
                }); //3
                await dispatch('getFunsByThirdParty', {
                    appToken: state.apptoken.result.appToken,
                    taskClass: '7',
                });
                router.push({ name: '/' });
                resolve(res);
            })
            .catch((err) => {
                reject(err);
            });
    });
},

2、获取user信息

// 甘肃第三方登录获取user信息  第二步
getUserInfoByThirdParty({ commit, state, rootGetters }, params) {
    return new Promise((resolve, reject) => {
        try {
            let {appId} = rootGetters['common/getThirdPartyLoginInfo']
            let formdata = new FormData()
            formdata.append('appId', appId)
            formdata.append('userToken', state.thirdPartyUserCookie)
            this._vm.$http
                .post(user.getUserInfoByThirdParty, formdata)
                .then((res) => {
                    commit('setThirdPartyUserInfo', res.data)
                    resolve(res)
                })
                .catch((err) => {
                    console.log(err)
                    reject(err)
                })
        } catch (e) {
            console.log(e)
            reject(err)
        }
    });
},

3、获取第三方权限信息

getFunsByThirdParty({ commit }, params) {
    return new Promise((resolve, reject) => {
        this._vm.$http
            .post(user.getFunsByThirdParty, params)
            .then((res) => {
                commit('setThirdPartyUserPermission', res.data);
                resolve(res);
            })
            .catch((err) => {
                reject(err);
            });
    });
},

4、登录

thirdPartyLogin({ commit }, params) {
    return new Promise((resolve, reject) => {
        this._vm.$http
            .post(user.thirdPartyLogin, params)
            .then((res) => {
                console.log('res.data---login', res.data.data);
                commit('setToken', res.data.data);
                resolve(res);
            })
            .catch((err) => {
                reject(err);
            });
    });
},

5、获取用户信息 同 getUserInfo

getThirdPartyInfo({ commit }, params) {
    return new Promise((resolve, reject) => {
        try {
            this._vm.$http
                .post(user.thirdPartyInfo, params)
                .then((res) => {
                    const { sysUser, roleVoList, orgVoList } = res.data.data;
                    const userInfo = {
                        ...sysUser,
                        roleVoList,
                        orgVoList,
                    };
                    commit('setUserInfo', userInfo);
                    resolve(res);
                })
                .catch((err) => {
                    reject(err);
                });
        } catch (error) {
            reject(error);
        }
    });
},

6、退出

loginOutByThirdParty({ commit }, params) {
    return new Promise(async (resolve, reject) => {
        try {
            await clearCookie('TRUSTED_SESSIONID');
            window.location.href = 'https://jwy.gs';
            resolve();
        } catch (e) {
            reject(e);
            console.log(e);
        }
    });
},

MOCK

提示

一下是关键接口返回报文,可自行MOCK调试。

// POST /crypto/stream/getAppToken

{
    'tag': "successed/failed",
    'msg': {
        'code': '404',
            'info': '具体错误内容,返回成功不用写'
    },
    'result': {
        'appToken': 'appToken----'  # // 申请应用令牌时返回此字段
    }
}
// POST /crypto/stream/getUserInfo

{
    'tag': "successed/failed",
    'msg': {
        'code': '404',
            'info': '具体错误内容,返回成功不用写'
    },
    //'authUserData: {},
    'result': {
        //以下字段为主要用户信息,其它信息可与研发协商修改
        'yhId': 'admin', '# '
        'xm': '姓名',  # '姓名'
        'jh': '警号',  # '//警号'
        'sfzh': '身份证号',  # //身份证号
        'dwdm': '单位代码要求12位这项可配置没少问题',  # //单位代码要求12位这项可配置没少问题
        'dwmc': '单位名称',  # //单位名称
        'zw': '职位'  # //职位
    }
}
// POST /crypto/PDA_Auth/user/funs.do

{
    'code': '001',
    'data': {
        'result': '2007,2049'
    }
}

其他

AppId

提示

目前只有 兰州市 和甘肃省厅使用第三方登录,对应的appId如下:

// src/util/global.js
export const LOGIN_CONFIG = [
  {
    desc: '甘肃省厅',
    appId: 'gsga00034',
    paramValue: '8',
  },
  {
    desc: '兰州市',
    appId: 'gsga01015',
    paramValue: '9',
  }
]
上次更新:
贡献者: QiaoJiazhou